override 指定子 (C++11以上)
提供: cppreference.com
仮想関数が別の仮想関数をオーバーライドすることを指定します。
目次 |
[編集] 構文
識別子 override
は、もし使用された場合は、メンバ関数の宣言またはクラス定義の内部のメンバ関数の定義の構文の宣言子の直後に現れます。
declarator virt-specifier-seq(オプション) pure-specifier(オプション) | (1) | ||||||||
declarator virt-specifier-seq(オプション) function-body | (2) | ||||||||
2) クラス定義の内部のメンバ関数の定義では、
override
は、宣言子の直後かつ function-body の直前の virt-specifier-seq に現れることができます。どちらの場合でも、 virt-specifier-seq は、使用された場合は、 override
または final または final override
または override final
のいずれかです。
[編集] 説明
メンバ関数の宣言または定義において、 override
は、その関数が仮想であり、基底クラスの仮想関数をオーバーライドしていることを保証します。 これが真でなければ、プログラムは ill-formed です (コンパイル時エラーが生成されます)。
override はメンバ関数の宣言子の後で使用されたときに特別な意味を持つ識別子です。 それ以外では予約されたキーワードではありません。
[編集] 例
Run this code
struct A { virtual void foo(); void bar(); }; struct B : A { void foo() const override; // エラー、 B::foo は A::foo をオーバーライドしていません。 // (シグネチャの不一致) void foo() override; // OK、 B::foo は A::foo をオーバーライドしています。 void bar() override; // エラー、 A::bar は仮想関数ではありません。 };
[編集] 関連項目
- final 指定子 (C++11以上)