#include #include #include using namespace std;
//虛析構函式
class a
~a()
protected:
private:
char *p;
};class b : public a
~b()
protected:
private:
char *p;
};class c : public b
~c()
protected:
private:
char *p;
};//只執行了 父類的析構函式
//向通過父類指標 把 所有的子類物件的析構函式 都執行一遍
//向通過父類指標 釋放所有的子類資源
void howtodelete(a *base)
/*void howtodelete(b *base)
*/int main()
virtual ~a()
protected:
private:
char *p;
};class b : public a
~b()
protected:
private:
char *p;
};class c : public b
~c()
protected:
private:
char *p;
};//只執行了 父類的析構函式
//向通過父類指標 把 所有的子類物件的析構函式 都執行一遍
//向通過父類指標 釋放所有的子類資源
void howtodelete(a *base)
/*void howtodelete(b *base)
*/int main()
{ c *myc = new c; //new delete匹配
//delete myc; //直接通過子類物件釋放資源 不需要寫virtual
howtodelete(myc);
cout<<"hello..."<
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...