독개

[C++] 7.7 함수 오버로딩

by #독개#
/*
*같은 이름의 함수를 여러개 사용하는 것 매개변수를 어떤 타입으로 받냐에 따라 여러개 정의
* 기능(함수내부정의)가 완전히 다른경우에도 함수오버로딩을 사용할수 있다.
* 즉 이름만 같고 매개변수만 다르면 된다
* 컴파일러는 이름은 같아도 매개변수가 다르면 다른 함수로 처리를 해버린다
* 주어진 인자가 매개변수와 가장 잘맞는것을 찾아서 처리 해준다
* 이것은 컴파일 할때 결정이 되어야한다. 즉 오버라이딩 해둿는데 인자가 나중에 뭐 입력받는다? 이런것 안된다
* 컴파일러가 처리해야하니 컴파일단계에서 인자가 다 결정되어서 실제로 Name Mangling을 통해 이름을 변경한다
* return 타입만 다른경우에는 오버로딩안됨, 함수이름과, 매개변수가 달라야함
* 
* 때로는 함수이름을 같게해서 오버라이딩을 억지로 쓰는것보다 그냥 함수이름으로 구분짓는게 좋을때도 있다
*/


#include <iostream>
#include <typeinfo>
using namespace std;

double sum(int x, int y)
{
	return 3 + 4;
}

void print(unsigned int value) {}
void print(float value) {}

int main()
{
	int x = 3;
	int y = 4;

	cout << typeid(sum(3, 4)).name() << endl;
	
	/*인자의 타입을 확실하게 해줘야한다*/

	print((unsigned int)'a');
	print(0u);
	print(3.14159f);
	return 0;

}

블로그의 정보

독한 개발자

#독개#

활동하기