[Basic C++] #6_오버라이딩과 오버로딩의 차이점
C++ 개발 관련 내용 중, 오버로딩과 오버라이딩에 대해 알아보겠습니다.
"전문가를 위한 C"의 8 항목, "클래스와 객체 마스터하기"의 내용입니다.
#0. 오버로딩 vs 오버라이딩
1. 개념
- C++의 오버로딩(Overloading)은 동일한 유효범위 내 혹은 동일한 상속 계층 내 여러 멤버 함수들이 서로 다른 시그니처를 갖고 함수 이름의 중복만 허용하는 기능입니다.
- C++의 오버라이딩(Overriding)은 부모 클래스에서 정의한 가상 함수를 자식 클래스에서 재정의 할 수 있도록 허용하는 기능입니다.
- 따라서, 오버라이딩과 오버라이딩의 차이점은 동일한 스코프 내 서로 다른 함수들이 함수 시그니처 중 동일한 이름만갖고 그 외 반환 타입, 파리미터 유형, 그리고 파라미터 개수 또한 같다면 오버라이딩, 다르다면 오버로딩입니다.
2. 예제 코드
// 오버 로딩: 매개 변수의 타입 혹은 갯수가 다를 경우, 멤버 함수의 이름 중복을 허용
class A
{
public:
void Set(double val);
void Set(const std::string& stringVal);
...
private:
double x;
std::string str;
};
// 오버라이딩: 이미 정의된 함수를 같은 이름으로 재정의 한다.
class parentClass
{
public:
void Set(double val);
private:
double x;
}
void parentClass::Set(double val)
{
x = val;
}
class childClass : public parentClass
{
public:
void Set(double val);
private:
double x;
}
// 같은 이름의 함수를 재정의
void childClass::Set(double val)
{
x = val * val;
}
3. 정리
- 오버로딩은 동일한 스코프 내 여러 서로 다른 함수들이 동일한 함수 이름을 사용하는 것을 의미하고, 오버라이딩은 부모 클래스에서 미리 정의한 가상 함수를 자식 클래스에서 재정의 하는 것을 의미합니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #8 파생 클래스와 베이스 클래스의 연동, 생성 순서, 생성자 체이닝, 캐스팅 (0) | 2022.03.16 |
---|---|
[Basic C++] #7 클래스 상속 활용 방법 (0) | 2022.03.10 |
[Basic C++] #5 메서드 종류, static 메서드, const 메서드 (0) | 2022.03.07 |
[Basic C++] #4 데이터 멤버의 종류, static, const (0) | 2022.03.07 |
[Basic C++] #3_얕은 복제, 깊은 복제 (0) | 2022.03.06 |