我一直在通過閱讀一些現有的代碼來進行一些代碼學習。我知道在非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