57

overrideVisual C++ 2012 でC++11 キーワードの使用を強制する方法はありますか?

(つまり、言うoverrideのを忘れた場合、警告/エラーを取得したい。)

4

2 に答える 2

22

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と、エラーになります。

しかし、ほとんどの提案は破棄され、属性ではなく「特別な意味を持つ識別子」として、finalおよび機能のみが保持されました。override

于 2012-11-04T22:28:01.167 に答える