C++

template / 연산자 오버로딩

khkg12 2023. 8. 10. 16:06

템플릿
템플릿은 C++ 프로그래밍 언어의 한 기능으로, 함수와 클래스가 제네릭 형과 동작할 수 있게 도와준다. 함수나 클래스가 개별적으로 다시 작성하지 않고도 각기 다른 수많은 자료형에서 동작할 수 있게 한다. 

int Add(int nA, int nB) {
	return nA + nB;
}

float Add(float nA, float nB) {
	return nA + nB;
}

// Add라고 하는 동일한 기능을 수행하는 함수가
// 쓰고자 하는 데이터 타입의 수만큼  똑같은게 계속 오버로딩을 해야됨

template<typename T>
T Add(T nA, T nB) {
	return nA + nB;
}


void main() {
	cout << Add(10, 5) << endl;
	cout << Add(10.21313f, 0.5f) << endl;
}

 

구조체끼리의 덧셈

연산자를 오버로딩하여 원하는대로 사용자가 정의할 수 있다.

struct A {
	int value;

	int Plus(A target) {
		return value + target.value;
	}

	int operator+(A& ref) { // 연산자 오버로딩
		return this->value + ref.value;
	}
};


void main() {

	A aInstance;
	aInstance.value = 30;
	A aInstance2;
	aInstance2.value = 10;

	// 구조체끼리 더하려면 연산자 오버로딩
	cout << aInstance + aInstance2 << endl;
}