Final (C++)
構文
FUNCTION NAME [[final]]
説明
final 属性を使用すると、クラスがさらに継承されたり、関数がオーバーライドされることが抑制されます。 final 属性をクラス定義またはクラス定義内の仮想メンバ関数宣言に追加できます。
final 属性があるクラスは別のクラスに対する基底クラスになることが許可されません。 final 属性の付いた仮想関数は、派生クラスでオーバーライドできません。
クラス B と B から派生したクラス D の仮想メンバ関数 f が final とマークされている場合は、関数 D::f は B::f にオーバーライドし、プログラムは不正な形式です(コンパイラによるメッセージはなし)。
例
struct B
{
virtual void f [[ final ]] ();
};
struct D : B
{
void f(); // ill-formed
};
移植性
POSIX | Win32 | Win64 | ANSI C | ANSI C++ | |
---|---|---|---|---|---|
deprecated |
+ |
メモ: final 属性は、Clang 拡張 C++ コンパイラ ではサポートされていません。