final 这个关键字表示 "最终、最后"的意思。用来修饰类表示该类不可被继承,如下:
class A final
{
A(){}
void a(){ cout << "hello world A!";}
};
class B : public A
{
B(){}
void b(){ cout << "hello world B!";}
};
编译不通过,会报如下错误:
error: base 'A' is marked 'final'
error C3246: “B”: 无法从“A”继承,因为它已被声明为“final”
如果用来修饰虚函数,则表示该虚函数不可被子类重写,如下:
class C
{
public:
C(){}
virtual void c() final { cout << "hello world C!";}
};
class D : public C
{
public:
D(){}
void c(){ cout << "hello world D!";}
};
编译不通过,会报如下错误:
error: declaration of 'c' overrides a 'final' function
error C3248: “C::c”: 声明为“final”的函数无法被“D::c”重写