?? 眾所周知,在實現(xiàn)多態(tài)的過程中,一般將基類的析構函數(shù)設為virtual,以便在delete的時候能夠多態(tài)的鏈式調用。那么析構函數(shù)是否可以設為純虛呢?
class CBase
{
public:
??? CBase()
??? {
??? ??? printf("CBase()\n");
??? }
???
virtual ~CBase() = 0;
};
答案是可以,那么這樣實現(xiàn)的目的是什么呢?當然是避免實例化。
但因為派生類不可能來實現(xiàn)基類的析構函數(shù),所以
基類析構函數(shù)雖然可以標為純虛,但是仍必須實現(xiàn)析構函數(shù),否則派生類無法繼承,也無法編譯通過。