有没有办法强制在 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/