C++-final关键词

final

C++11 中,引入了 final 关键词。

禁用继承

为了防止类被继续继承。

1
2
3
4
5
6
7
8
9
struct Base 
{
virtual void foo();
};
struct SubClass1 final: Base
{}; // 可行

struct SubClass2 : SubClass1
{}; // error!SubClass1 已 final

禁用重写

为了防止虚函数继续被重写。

```cpp
struct Base
{
virtual void foo() final;
};
struct subClass : base
{
void foo(); // error!foo 已 final
}