我一直在通过阅读一些现有的代码来进行一些代码学习。我知道在非COM类型的接口上使用虚拟析构函数的重要性。我的意思是不是从IUKOWN或IInspectable派生出来的。IUknown Derived接口上的虚拟析构函数
但是,我无法理解为什么它不需要在COM接口上具有虚拟析构函数。
我已经定义了这样的
MIDL_INTERFACE("0D70D782-809D-403B-AC95-XXXXXX")
IMyInterface : IUnknown
{
public:
virtual bool method1() = 0;
virtual int method2() = 0;
}
我的界面,并在同一时间我有犯规从IUnkown得出这样
class ISampleLogic
{
public:
virtual ~ISampleLogic() {};
//some more methods
}
为什么没有用于第一界面没有虚析构函数的另一个接口?
预先感谢
通常,如果您不打算在接口上调用delete,则“接口”没有虚拟析构函数是可以的。虽然,如果是这样的话[可能是好的做法](http://www.gotw.ca/publications/mill18.htm)有一个受保护的析构函数。 – 2014-12-04 08:56:37