C++/Modern C++(11, 14, 17, 20)
[C++11] Explicit virtual overrides
deulee
2023. 8. 25. 15:24
C++11에선 명시적으로 가상 함수를 오버라이딩을 할 수 있다.
만약 가상 함수가 부모의 가상 함수를 오버라이딩 하지 않고 비가상 함수를 오버라이딩(재정의) 하는 경우 컴파일 단위에서 에러를 나타낼것이다.
#include <iostream>
class A {
public:
virtual void foo() = 0;
void bar();
};
class B : public A {
public:
void foo() override; // correct -- B::foo overrides A::foo
void bar() override; // error -- A::bar is not virtual
void baz() override; // error -- B::baz does not override A::baz
};
이로 인해서 코드의 가독성을 높일 수 있다.