[Basic C++] #17_오버라이딩의 특수한 경우 네 번째, 디폴트 인자 값
C++ 개발에서 오버라이딩을 사용 시 주의할 점에 대해서 알아보겠습니다.
"전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다.
파생 클래스에서 '명시적'으로 복제 생성자를 정의할 경우
// 슈퍼 혹은 베이스 클래스
class Super
{
public:
Super();
Super(const Super& _super);
};
// 서브 혹은 파생 클래스
class Sub : public Super
{
public:
Sub();
Sub(const Sub& _sub);
};
// 파생 클래스의 복제 생성자
Sub::Sub(const Sub& _sub) : Super(_sub)
{}
클래스 안에서 동적 메모리 할당을 사용할 때 복제 생성자와 대입 연산자를 정의하면 편리하게 이용할 수 있죠.
하지만, 명시적 혹은 사용자 정의 복제 생성자 혹은 대입 연산자를 파생 클래스에서 작성할 경우 주의해야 할 점이 있습니다.
파생 클래스에서 복제 생성자를 명시적으로 정의할 경우, 반드시 부모의 복제 생성자를 호출해 주어야 합니다.
만약 호출하지 않으면, 부모 객체의 데이터 생성은 디폴트 생성자가 사용되기 때문이죠.
대입 연산자도 마찬가지로, 부모의 대입 연산자를 호출해 주어야 합니다.
파생 클래스에서 복제 생성자 혹은 대입 연산자를 명시적으로 정의할 경우,
반드시 부모 클래스의 것 또한 호출해 주어야 합니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #19_virtual, virtual의 내부 구현 (0) | 2022.04.30 |
---|---|
[Basic C++] #18_오버라이딩의 특수한 경우 여섯 번째, 일반 메소드의 오버라이딩 (0) | 2022.04.30 |
[Basic C++] #16_오버라이딩의 특수한 경우 네 번째, 디폴트 인자 값 (0) | 2022.04.03 |
[Basic C++] #15 오버라이딩의 특수한 경우 세 번째 (0) | 2022.03.26 |
[Basic C++] #14 오버라이딩의 특수한 경우 두 번째 (0) | 2022.03.25 |