析構(gòu)函數(shù)為什么是虛函數(shù) 為什么基類的析構(gòu)函數(shù)定義為虛函數(shù)?
為什么基類的析構(gòu)函數(shù)定義為虛函數(shù)?我們經(jīng)常使用基類指針指向派生類對(duì)象,然后通過delete基類指針刪除派生類對(duì)象。此時(shí),為了確保派生類對(duì)象可以被完全析構(gòu)函數(shù),我們自然需要基類析構(gòu)函數(shù)是一個(gè)虛函數(shù)。這樣
為什么基類的析構(gòu)函數(shù)定義為虛函數(shù)?
我們經(jīng)常使用基類指針指向派生類對(duì)象,然后通過delete基類指針刪除派生類對(duì)象。此時(shí),為了確保派生類對(duì)象可以被完全析構(gòu)函數(shù),我們自然需要基類析構(gòu)函數(shù)是一個(gè)虛函數(shù)。這樣,在刪除的時(shí)候會(huì)調(diào)用派生類析構(gòu)函數(shù),否則只調(diào)用基類析構(gòu)函數(shù),派生類不能完全析構(gòu)函數(shù)出來的部分。
在一個(gè)類中可以定義多少個(gè)析構(gòu)函數(shù)?
只能定義一個(gè)析構(gòu)函數(shù)。如果太多,編譯器不知道調(diào)用哪一個(gè)。
1。虛析構(gòu)函數(shù)和析構(gòu)函數(shù)在函數(shù)上是相同的,所以除了動(dòng)態(tài)綁定之外,其他屬性與析構(gòu)函數(shù)相似。
2. 析構(gòu)函數(shù)與構(gòu)造函數(shù)的名稱相同,但它前面必須有波浪號(hào)(~)
3。析構(gòu)函數(shù)沒有參數(shù),沒有返回值,不能重載。因此,一個(gè)類中只能有一個(gè)析構(gòu)函數(shù)。當(dāng)對(duì)象被撤消時(shí),編譯器將自動(dòng)調(diào)用析構(gòu)函數(shù)。