언어/Basic C++

[Basic C++] #10 오버라이드 키워드, override

Hardii2 2022. 3. 17. 13:10

[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" 키워드와 함께 선언하고 재정의하여, 혹시 모를 의도와 다른 상황이 발생했음을 알 수 있습니다.