虛析構函式

2021-07-22 02:43:04 字數 1070 閱讀 6390

#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 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...