C++11之final
作用
限定虚函数或类。指定派生类不能覆写基类的虚函数,或类不能被继承。
位置:对虚函数而言,位置同 override; 对类来说,位于类名之后。
其他位置的 final 同 override 一样,并非保留标识符,无特殊含义,可用作对象名或函数名。
class Base
{
public:
virtual void foo() { }
void final() {} // ok: 此处的 final 并无特殊含义,可以用作函数名
void override() {} // ok
};
class Derived : public Base
{
public:
void foo() final { } // ok 指定 foo 不能被 Derived 的派生类重写
virtual void goo() final {} // ok
void hoo() final {} // error: hoo 不是虚函数
};
class C final: public Derived // 指定类 C 不能被继承
{
public:
void foo() {} // error: Derived::foo 被 final 限定, 在 Derived 的派生类 C 中不能被重写
};
class D : public C // error: 类 C 由final限定,指定类 C 不能再被继承
{
};
final 与 override 的使用就是如此的简单 ?