1. 오버로딩 vs. 오버라이딩
오버로딩 (overloading) | 오버라이딩 (overriding) | |
개념 | 동일한 이름의 함수를 중복 정의 | 상속 받은 함수를 재정의 |
제한 조건 | 1. 메소드명 동일 2. 메소드 원형이 하나 이상 달라야 함 3. 메소드 리턴 타입 동일 여부 상관 X |
1. 메소드명 동일 2. 메소드 원형 모두 동일 3. 메소드 리턴 타입 동일 |
* 메소드 원형 : parameter 개수, 자료형
2. 오버로딩
2-1. 오버로딩이란 ?
오버로딩이란 동일한 이름의 함수를 중복 정의한다는 개념이다. 컴파일러는 사용된 함수의 매개변수 개수나 자료형을 구분하여 자동으로 어떤 함수를 호출해야 하는지 결정한다.
따라서 오버로딩은 하나의 함수에 여러 형태를 부여하는 다형성(polymorphism)을 갖는다.
#include <iostream>
using namespace std;
int myFunc(int i) {
return i + 1;
}
char myFunc(char c) {
return c + 1;
}
double myFunc(double d) {
return d + 1.5;
}
int main(void) {
int a = 3;
char b = 'k';
double c = 2.5;
cout << myFunc(a) << endl;
cout << myFunc(b) << endl;
cout << myFunc(c) << endl;
return 0;
}
2-2. 오버로딩이 불가능한 경우
① return 타입만 다른 두 함수
void myFunc(int i) { }
char myFunc(int i) {
return 'a';
}
② parameter 개수/데이터 타입이 동일한 static 함수
static void myFunc(int i) {}
void myFunc(int i) {}
③ parameter 차이가 배열 vs 포인터 형태인 함수들
void myFunc(int *a) {}
void myFunc(int a[]) {}
'Coding Test > C++ 기초' 카테고리의 다른 글
[C++ 기초] 템플릿 (0) | 2022.08.18 |
---|---|
[C++ 기초] 상속 (0) | 2022.08.03 |
[C++ 기초] 클래스 (0) | 2022.08.03 |
[C++ 기초] 포인터 (0) | 2022.07.20 |
[C++ 기초] 배열 (0) | 2022.07.20 |