析構(gòu)函數(shù)為什么是虛函數(shù) 為什么基類(lèi)的析構(gòu)函數(shù)定義為虛函數(shù)?
為什么基類(lèi)的析構(gòu)函數(shù)定義為虛函數(shù)?我們經(jīng)常使用基類(lèi)指針指向派生類(lèi)對(duì)象,然后通過(guò)delete基類(lèi)指針刪除派生類(lèi)對(duì)象。此時(shí),為了確保派生類(lèi)對(duì)象可以被完全析構(gòu)函數(shù),我們自然需要基類(lèi)析構(gòu)函數(shù)是一個(gè)虛函數(shù)。這樣
為什么基類(lèi)的析構(gòu)函數(shù)定義為虛函數(shù)?
我們經(jīng)常使用基類(lèi)指針指向派生類(lèi)對(duì)象,然后通過(guò)delete基類(lèi)指針刪除派生類(lèi)對(duì)象。此時(shí),為了確保派生類(lèi)對(duì)象可以被完全析構(gòu)函數(shù),我們自然需要基類(lèi)析構(gòu)函數(shù)是一個(gè)虛函數(shù)。這樣,在刪除的時(shí)候會(huì)調(diào)用派生類(lèi)析構(gòu)函數(shù),否則只調(diào)用基類(lèi)析構(gòu)函數(shù),派生類(lèi)不能完全析構(gòu)函數(shù)出來(lái)的部分。
析構(gòu)函數(shù)和虛函數(shù)的用法及作用?
析構(gòu)函數(shù)用于釋放已定義對(duì)象中使用的指針。不需要調(diào)用默認(rèn)的析構(gòu)函數(shù),而需要在程序結(jié)束時(shí)調(diào)用自建的析構(gòu)函數(shù)。虛函數(shù)可以使成員函數(shù)的運(yùn)算泛化。當(dāng)基類(lèi)的指針指向不同派生類(lèi)的對(duì)象時(shí),如果基類(lèi)的指針調(diào)用其虛成員函數(shù),它將調(diào)用實(shí)際指向該對(duì)象的成員函數(shù),而不是基類(lèi)中定義的成員函數(shù)(只要派生類(lèi)更改成員函數(shù))。如果它不是虛函數(shù),則無(wú)論基類(lèi)指針指向哪個(gè)派生類(lèi)對(duì)象,都將調(diào)用在基類(lèi)中定義的函數(shù)。