有没有办法在 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
,那么这是一个错误。但是大部分提案都被删除了,只有
final
和 override
特征被保留下来,作为“具有特殊含义的标识符”而不是属性。关于c++ - 如何强制使用 'override' 关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13223277/