【发布时间】:2016-07-28 15:38:33
【问题描述】:
这段代码确实有效:
class Abstract {
virtual auto foo() -> int = 0;
};
class Concrete: public Abstract {
int foo() { cout << "blah!" << endl; return 1; }
} instance;
我知道函数被破坏并链接到相同的函数签名,但这种混合在 C++14 中实际上合法吗?
【问题讨论】:
-
我假设
Concrete应该从Abstract那里派生? (P.S:如果你想确保它实际上覆盖了基函数,请使用 override 关键字。如果编译失败,那么你就知道它们不匹配。) -
由于 c++ 是向后兼容的,它应该不是问题,如果需要它是另一个问题(样式指南)
-
@deW1 generally / mostly 向后兼容会更准确 ;-)
-
@Borgleader 显然。编辑以反映这一点。