有没有办法在 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,那么这是一个错误。

但是大部分提案都被删除了,只有 finaloverride 特征被保留下来,作为“具有特殊含义的标识符”而不是属性。

关于c++ - 如何强制使用 'override' 关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13223277/

10-13 08:07