Possible Duplicate:
Destructors for C++ Interface-like classes
考虑一个用于对接口(interface)建模的 C++ 抽象类的简单示例:
class IAnimal
{
virtual void walk()=0;
virtual ~IAnimal(){}
};
有析构函数更好,还是没有?我不认为析构函数可以是纯虚拟的,至少我的测试给出了链接器错误,所以应该包含一个空的析构函数吗?
编辑:抱歉,错字。它是析构函数而不是构造函数。
最佳答案
您应该始终使用带接口(interface)的虚拟析构函数。举个例子:
IAnimal* animal = new Lion();
delete animal;
现在它将使用什么析构函数?肯定不是 Lion 的析构函数,因为接口(interface)不知道 Lion 的析构函数。
因此,如果您的界面没有内存管理,请使用此功能:
virtual ~IAnimal(){}
关于c++ - C++ 'interfaces' 是否应该有一个虚拟析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628529/