Make Unreal REAL.
article thumbnail
Published 2023. 3. 1. 12:04
override 키워드 C++/기타

 

다음은 정상적으로 오버라이딩을 하는 상황이다.

 

부모 함수에 virtual 키워드가 지정되어 있고 자식에서 override 키워드가 지정되어 있다.

 

class Parent
{
    virtual void action() { cout << "Parent" << endl; }
};

class Child : public Parent
{
    virtual void action() override { cout << "Child" << endl; };
};

 

출력

Child

 

부모에 virtual 키워드가 지정되어 있다면, 자식에서 override 키워드를 생략해도 정상적으로 작동은 한다.

 

class Parent
{
    virtual void action() { cout << "Parent" << endl; }
};

class Child : public Parent
{
    virtual void action() { cout << "Child" << endl; };
};

 

출력

Child

 

부모에서 virtual 키워드를 생략한 경우에는 상속받은 함수가 아니라 자식에서 가상 함수를 정의한 것으로 처리되며 부모 클래스에서의 실수를 감지할 수 없다.

 

class Parent
{
    void action() { cout << "Parent" << endl; }
};

class Child : public Parent
{
    virtual void action() { cout << "Child" << endl; };
};

 

출력

Child

 

자식에서 override 키워드를 붙여주면 컴파일 과정에서 부모에서 virtual 키워드를 생략한 것을 감지할 수 있다.

 

class Parent
{
    // 컴파일 오류 ! !
    void action() { cout << "Parent" << endl; }
};

class Child : public Parent
{
    virtual void action() override { cout << "Child" << endl; };
};

 

출력

컴파일 오류 ! !

'C++ > 기타' 카테고리의 다른 글

람다 식에서 [this] 캡처  (0) 2023.03.15
클래스 전방 선언(Forward declaration)  (0) 2023.03.07
__cplusplus  (0) 2023.02.21
swap(), iter_swap(), swap_ranges()  (0) 2023.02.18
재사용 가능한(Reusable) 코드 작성  (0) 2023.02.16
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그