假如一個基類類型的指針指向了一個派生類的對象,如果需要將指針delete時,假如基類的析構函數不爲虛函數,這時就會只調用基類的析構函數,而指針指向的是派生類的對象,派生類的對象不包含基類的析構函數,這時候就像是拆房子的時候只把地基給拆了,地基上的建築仍然存在。
而如果基類的析構函數爲虛函數時,在delete時,編譯器就會解析指針指向的對象是誰,這時候如果指向的是派生類的對象,就會先調用派生類的析構函數,再調用基類的析構函數。
假如一個基類類型的指針指向了一個派生類的對象,如果需要將指針delete時,假如基類的析構函數不爲虛函數,這時就會只調用基類的析構函數,而指針指向的是派生類的對象,派生類的對象不包含基類的析構函數,這時候就像是拆房子的時候只把地基給拆了,地基上的建築仍然存在。
而如果基類的析構函數爲虛函數時,在delete時,編譯器就會解析指針指向的對象是誰,這時候如果指向的是派生類的對象,就會先調用派生類的析構函數,再調用基類的析構函數。