[C++] final
Updated:
개요
- 파생 클래스에서 가상 함수를 재정의 불가 혹은 클래스를 파생 불가하도록 지정
- 재정의 혹은 파생 시 컴파일 에러 발생
예제
- 코드
class A { public: virtual void func1(){}; virtual void func2(){}; }; class B : public A { public: virtual void func1(){}; virtual void func2() final{}; }; class C final : public B { public: virtual void func1(){}; virtual void func2(){}; }; class D : public C {}; int main() { return 0; }
- 실행 결과
main.cpp:16:30: error: virtual function ‘virtual void C::func2()’ overriding final function 16 | virtual void func2(){}; | ^~~~~ main.cpp:10:30: note: overridden function is ‘virtual void B::func2()’ 10 | virtual void func2() final{}; | ^~~~~ main.cpp:19:7: error: cannot derive from ‘final’ base ‘C’ in derived type ‘D’ 19 | class D : public C {}; | ^