final。

それ以上の継承オーバーライドを禁止する指定子。

関数に付ける場合

finalを付けると、その関数はそれ以上の派生クラスでオーバーライドできなくなる。

class Base
{
public:
    void print() const final
    {
    }
};

この場合、Baseを継承したクラスでprint()をオーバーライドしようとするとコンパイルエラーになる。

クラスに付ける場合

クラス名にfinalを付けると、そのクラスは基底クラスとして使えなくなる。

class A final
{
};

この場合、Aを継承することはできない。

用途

  • これ以上の派生で振る舞いを変更させたくないとき
  • クラス設計上、そのクラスを継承させたくないとき

参考