final
c++11中增加了final标识符,主要有两个作用:
1) 限制某一个类不能被继承;
2) 限制某一个虚函数不能被重写,且final只能修饰虚函数。
例如:
class A
{
public:
virtual void foo() final;
}
class B final : public A
{
public:
void foo(); //error
}
class C : public B //error
{
}
override
overide标注符确保在派生类中声明的重写函数与基类的虚函数有相同的签名,同时也明确表明将会重写基类的虚函数,还可以防止因疏忽把本来想重写基类的虚函数声明成重载。
例如:
class A
{
public:
virtual void foo() {}
}
class B : public A
{
pubic:
void func() override
{
}
}