728x90
- 함수 이름은 같고 매개변수가 다름
- 매개변수가 다르기 때문에 다른 함수로 인식
- 하지만 반환형이 다르다고 해서 다른 함수로 인식하지 않음
void Person(int age); // 문제없음
void Person(char * name, int age); // 문제없음
void Person(float weight, int age); // 문제없음
int Person(int age); // void Person(int age)과 반환형이 다르지만
// 매개변수의 종류가 같음 -> 컴파일 에러
int Person(float weight); // 문제없음
<어떤 함수를 호출해야 하는지 판단하는 과정>
1. 가장 적합한 함수 --> 좋음
2. 형변환 (하지만 컴파일 경고가 나올 수 있음 - 형변환해서 일치하는 함수 찾았는데, 진짜 네가 원하는게 맞니??)
2-1. 정확하기 일치하는 타입이 없다면 아래와 같이 형변환하여 일치하는 함수 찾음
- Char, unsigned char, short --> int
- Unsigned short --> int
- Float --> double
- Enum --> int
2-2. 그래도 없으면 포괄적인 형변환
- 다른 숫자 타입으로 변환 (예 float --> int)
- Enum --> int
- 포인터 --> void 포인터
3. 매칭되는 함수를 찾을 수 없는 경우 --> 컴파일 에러
4. 매칭되는 함수를 여러 개 찾는 경우 --> 컴파일 에러
(1) void Print(int x);
(2) void Print(int x, int y);
(3) void Print(float x, const char * name);
Print(10); // (1)
Print(10, 20); // (2)
Print(71.9f, "Sam"); // (3)
Print("Sam", 71.9f); // 컴파일 에러
Print(71.9f); // (1), 단 컴파일 경고가 나올 수 있음
반응형
'Robotics > C++' 카테고리의 다른 글
C++ 생성자 (Constructor) (0) | 2022.12.05 |
---|---|
C++ 객체생성 new, delete / 멤버 변수 초기화 (0) | 2022.12.05 |
C++ 접근 제어자 (Access Modifier) public / protected / private (0) | 2022.12.02 |
C++ Reference (참조) (0) | 2022.10.23 |