[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;
}
'🔥 프로그래밍 학습 > C++' 카테고리의 다른 글
[C++] 7.9 함수 포인터 (0) | 2022.11.18 |
---|---|
[C++] 7.8 매개변수의 기본값 Default Parameters (0) | 2022.11.18 |
[C++] 7.6 Inline 함수 (0) | 2022.11.17 |
[C++] 7.5 다양한 Return 값들(값,주소,참조,구조체,튜플) (0) | 2022.11.17 |
[C++] 7.4 Call by Address 주소에 의한 인수 전달 (0) | 2022.11.17 |
블로그의 정보
독한 개발자
#독개#