Joh*_*ohm 3 c++ abstract observer-pattern
好的,今天我遇到了这个问题,那时TI TMS470 C++编译器拒绝接受它.
这来自"Head First Design Patterns"示例代码的C++版本的Silver版本.
class foo {
...
protected:
virtual ~foo() = 0 {}; // compiler barfs on this line
};
Run Code Online (Sandbox Code Playgroud)
编译器拒绝接受"= 0"(纯虚拟)和"{}"的组合(我猜这是为了让派生类无论如何都要抛出析构函数.
究竟他们试图用这条线做什么,它真的是合法的C++,它有多重要?
它不是合法的C++.纯虚函数可以有一个主体,但定义必须是在课外进行的.
在这种特殊情况下(函数是析构函数),如果在程序中的任何地方使用类,函数必须有一个主体(即,如果它在某个地方用作基类,因为这是可以使用抽象的唯一方法类).
确定整个事情的正确方法如下
class foo {
...
protected:
virtual ~foo() = 0;
};
inline foo::~foo()
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |