tow*_*owi 29 c++ virtual attributes overriding c++11
它说的是C++ 11 FDIS
如果使用virt-specifier override标记虚函数并且不覆盖基类的成员函数,则该程序格式错误.[例如:
Run Code Online (Sandbox Code Playgroud)struct B { virtual void f(int); }; struct D : B { void f(long) override; // error: wrong signature overriding B::f void f(int) override; // OK };
如果B::f没有被标记为虚拟怎么办?那个程序是不是形成了吗?或者override然后被忽略.我在std文本中找不到任何处理此案例的内容.
更新1/2(合并)我将请求转发给C++编辑器以查看事物.谢谢约翰内斯向我指出这一点.
但是通过实现这一点,我发现,无法满足"覆盖"上下文关键字的意图:如果函数名称中的拼写错误或错误的参数类型确实使函数本身非虚拟,那么标准的文本永远不会适用 - - 并且"覆盖"变得无用.
最好的解决方案可能是
Arm*_*yan 29
如果
B::f没有被标记为虚拟怎么办?那个程序是不是形成了吗?
是的.因为为了覆盖某些东西,那些东西必须是虚拟的.否则它不会覆盖,它隐藏起来.因此,肯定的答案来自你问题中的引用.