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
};
이로 인해서 코드의 가독성을 높일 수 있다.
[C++11] Delegating Constructors (0) | 2023.08.25 |
---|---|
[C++11] User-defined literals (0) | 2023.08.25 |
[C++11] Final specifier (0) | 2023.08.24 |
[C++11] Default functions (1) | 2023.08.24 |
[C++11] Deleted functions (0) | 2023.08.24 |