事情是这样的:
使用c++定义接口类时,需要声明纯虚析构,按道理我们应该实现这个纯虚析构,这样它的实现子类才能被触发析构。
class Interface {
public:
virtual ~Interface() = 0 {}
}
这个例子在网上也说可以。。。。(其实使用VS2005编译没问题)
但是实际上当使用gcc编译时,会报错pure-specifier on function-definition。
所以必须定义成virtual ~Interface() = 0;
理由没深究,实现纯虚函数不是合法的c++, 但是VC++支持