final。
関数に付ける場合
finalを付けると、その関数はそれ以上の派生クラスでオーバーライドできなくなる。
class Base
{
public:
void print() const final
{
}
};この場合、Baseを継承したクラスでprint()をオーバーライドしようとするとコンパイルエラーになる。
クラスに付ける場合
クラス名にfinalを付けると、そのクラスは基底クラスとして使えなくなる。
class A final
{
};この場合、Aを継承することはできない。
用途
- これ以上の派生で振る舞いを変更させたくないとき
- クラス設計上、そのクラスを継承させたくないとき