[Basic C++] #10_오버라이드 키워드, override
C++ 개발에서 베이스 클래스의 가상 함수를 오버라이딩 하는 구체적인 예제들을 살펴보겠습니다.
"전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다.
오버라이드 키워드(override)
class Super
{
public:
Super();
virtual ~Super();
virtual void someMethod(double d);
};
class Sub : public Super
{
public:
Sub();
virtual void someMethod(int i) override; // 에러 발생!
};
먼저, "override" 키워드 사용의 필요성에 대해 복기해봅시다.
서브 클래스는 베이스 클래스에서 선언한 가상 함수 "someMethod"를 오버라이딩 할 목적을 갖고 있다고 가정합시다.
이때, 서브 클래스에서 재정의 할 목적으로 선언한 "someMethod" 가상 함수는 베이스 클래스의 것과 크게는 함수 시그니처가 다르고, 구체적으로 parameter의 데이터 타입이 다릅니다.
결과적으로, 서브 클래스는 베이스 클래스의 가상 함수와 이름만 같은 또 다른 가상 함수를 선언한 것에 지나지 않습니다.
따라서, 서브 클래스에서 재정의 할 목적으로 작성된 가상 함수를 "override" 키워드와 함께 선언하고 재정의하여, 혹시 모를 의도와 다른 상황이 발생했음을 알 수 있습니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #12 순수 가상 함수, 추상 클래스 (0) | 2022.03.25 |
---|---|
[Basic C++] #11 생성자의 상속 (0) | 2022.03.18 |
[Basic C++] #9 객체의 업캐스팅과 다운캐스팅, 슬라이싱 (0) | 2022.03.16 |
[Basic C++] #8 파생 클래스와 베이스 클래스의 연동, 생성 순서, 생성자 체이닝, 캐스팅 (0) | 2022.03.16 |
[Basic C++] #7 클래스 상속 활용 방법 (0) | 2022.03.10 |