3-1 오버로딩
int Add(int X, int Y);
// 위와 같이 Add() 함수가 정의되어 있다고 해봅시다.
// 어느 날, float 자료형의 값들 간의 덧셈 함수를 구현해야 했습니다.
// "Add"라는 이름은 이미 int 자료형의 값들 간의 덧셈 함수 구현에 쓰였으니,
// float Accumulate(float X, float Y);라고 정의해야 할까요?
// 팀원에게 "int 간의 덧셈은 Add() 함수 쓰고, float 간의 덧셈은 Accumulate() 함수 써야해"라고 해야하나요?
// 이름은 같지만(Add), 매개변수 목록(int, float, double, ...)은 다르게 함수를 재정의 할 수 있습니다.
오버로딩(Overloading)
- 같은 이름이지만 매개변수 목록은 다르게 함수를 재정의하는 것을 "오버로딩"이라 한다.
- 함수 중복 정의 - 같은 반환 자료형, 같은 이름, 같은 매개변수 목옥으로 함수를 다시 정의 하는 경우 //컴파일에러
- 함수 오버라이딩 - 같은 반환 자료형, 같은 이름, 같은 매개변수 목옥으로 부모 클래스의 멤버 함수를 다시 정의하는 경우
- 함수 오버로딩 - 같은 이름, 다른 매개변수 목록으로 함수를 다시 정의하는 경우. 반환 자료형은 오버로딩의 판단 기준 X
int ADD()
int ADD() // 위와 같은 함수로 중복 정의
void ADD() // 반환 자료형이 달라도 함수명과 매개변수가 같으므로 중복 정의
int ADD(int A, int B) // 함수는 같으나 매개변수가 다르므로 오버로딩
함수 오버로딩 매칭
오버로딩된 함수 중에 어떤 함수를 호출해야 하는지 판단하는 과정. 함수 매칭 결과는 3가지가 있다.
- 첫 번째, 가장 적합한 함수를 하나 찾은 경우 -> 정상 작동
- 두 번째, 매칭 되는 함수를 여러 개 찾은 경우 -> 컴파일 에러
- 세 번째, 매칭 되는 함수를 찾을 수 없는 경우 -> 컴파일 에러
int Max(int, int);
int Max(double, double);
Max(1, 3.14);
// 1번을 매칭해도 1개는 정확한 매치, 1개는 암시적 형변환(표준 변환)
// 2번을 매칭해도 1개는 암시적 형변환, 1개는 정확한 매치.
// 따라서 모호한 호출이므로 컴파일 에러.'학습일지 > C와 C++' 카테고리의 다른 글
| C/C++ 상속과 다형성, 추상 클래스 (0) | 2026.03.12 |
|---|---|
| C++ RPG 전투 시스템 구현 과제 (0) | 2026.03.11 |
| C/C++ 전직 (0) | 2026.03.10 |
| C/C++ Class (0) | 2026.03.09 |
| C++ Console IO (0) | 2026.03.08 |