final 指定子
派生クラスでオーバーライドできない仮想関数を示すために final のキーワードを使用できます。また、継承できないクラスを示すために使用します。
function-declaration final;
class class-name final base-classes
解説
final は関数宣言またはクラス名の後で使用している場合のみコンテンツに即し、特別な意味を持つ; それ以外の場合は、予約キーワードではありません。
final がクラスの申告で使用すると、base-classes は申告のオプション部分です。
使用例
次の例は、仮想関数をオーバーライドできないことを指定するには final のキーワードを使用します。
class BaseClass
{
virtual void func() final;
};
class DerivedClass: public BaseClass
{
virtual void func(); // compiler error: attempting to
// override a final function
};
メンバー関数をオーバーライドできることを指定する方法の詳細については、override 指定子"を参照してください。
次の例は、クラスの継承ができないことを指定するには final のキーワードを使用します。
class BaseClass final
{
};
class DerivedClass: public BaseClass // compiler error: BaseClass is
// marked as non-inheritable
{
};