Visual C++ 2012でC++ 11 override
キーワードの使用を強制する方法はありますか?
(つまり、override
と言うのを忘れた場合は、警告/エラーを受け取りたいと思います。)
C++ 11はほとんどあなたが望むものを持っていました。
元々、override
キーワードは、より大きな提案( N2928 )の一部であり、その使用法を強制する機能も含まれていました。
class A
{
virtual void f();
};
class B [[base_check]] : public A
{
void f(); // error!
};
class C [[base_check]] : public A
{
void f [[override]] (); // OK
};
base_check
属性は、override
キーワードを使用せずに仮想関数をオーバーライドするとエラーになります。
関数が基本クラスの関数を非表示にすることを示すhiding
属性もありました。 base_check
が使用され、関数がhiding
を使用せずに基本クラスから1つを非表示にする場合、それはエラーです。
しかし、提案のほとんどは削除され、属性ではなく「特別な意味を持つ識別子」として、final
およびoverride
機能のみが保持されました。