final
// 클래스에 final 키워드
// 상속될 수 없음
class A final
{
public:
A();
virtual ~A();
virtual void Func(string InParam);
};
// Error!!
class B : public A
{
public:
B();
~B();
void Func(string InParam) override;
};
class C
{
C();
// 함수에 final 키워드
// 상속될 수 없음
virtual void Func(string InParam) final;
};
class D : public C
{
D();
// Error!!!
void Func(string InParam) override;
};
// - A는 final로 선언되었기 때문에 상속 불가
// - C의 Func 멤버 함수는 final로 선언되었기 때문에 D에서 overriding이 불가능
- 더 이상의 상속을 차단하는 키워드
- 클래스, 메서드에 사용 가능
- 비가상 메서드에는 사용할 수 없음
- C#의 sealed와 유사
출처