考虑:
struct device{
virtual void switchon() = 0 {}
};
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
我写了类似于以下的代码,它给出了一个错误:
函数定义编译的纯指定符因-Wfatal-errors而终止.
当我问他时,他向我展示了标准中的以下引用:
在类中声明的虚函数应在该类中定义或声明为纯(10.4),或两者兼有; 但不需要诊断(3.2).
我似乎无法理解这意味着什么,我认为这在某种程度上是不相关的.
PS:如果这不是相关的引用,请引导我到正确的引用,以便我可以有更好的反驳.
纯虚函数可能有一个定义(在类定义之外).这完全是可选的.但是你要做的事情是完全错误的,因为
C++ 03 [部分10.4/2]说:
[注意:函数声明 不能同时提供纯指定符和定义 -end note] [示例:
Run Code Online (Sandbox Code Playgroud)struct C { virtual void f() = 0 { }; // Ill-formed }
但是你可以自由地写
struct device{
virtual void switchon() = 0;
};
void device::switchon() { } // Definition {optional}
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1585 次 |
| 最近记录: |