c++/c++11 14 17 20
virtual override final
로봇0301
2023. 1. 14. 00:17
virtual은 해당되는 메서드가 가상함수임을 표시하는 키워드다.
1 2 3 4 5 | class Test { virtual void f(); } | cs |
c++ 11에 추가된 override는 해당되는 가상함수가 오버라이드 되었음을 나타낸다.
1 2 3 4 5 6 7 8 9 | class Test1 { virtual void f(); } class Test2 : Test1 { virtual void f() override; } | cs |
c++11에 추가된 final은 해당되는 가상함수가 오버라이드 되었음을 나타낸다.
또한 다음 서브클래스의 재정의된 함수부터는 더이상 가상함수가 아니라는 것을 의미한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Test1 { virtual void f(); } class Test2 : Test1 { virtual void f() override; } class Test3 : Test2 { virtual void f() final; } | cs |
자세히 찾아보니 동적바인딩이 아니면 오버라이딩이 아니라는 것 같다.
그래서 오버라이딩이 아니라 재정의라고 했다.