因為,C++中存在派生類的對象可以賦值給其基類的對象這一特點。
就存在一個問題,當(dāng)在堆中申請一個派生類,用其基類指針去指向,在delete釋放內(nèi)存時,只會調(diào)用對應(yīng)的基類的析構(gòu)函數(shù),而不會調(diào)用派生類特有的析構(gòu)函數(shù)。所以會導(dǎo)致內(nèi)存泄露,而且這個錯誤不會被編譯器發(fā)現(xiàn)。
所以為了能釋放派生類的內(nèi)存,就有了,虛析構(gòu)函數(shù)。就是在基類的析構(gòu)函數(shù)前加上virtual ,這樣會產(chǎn)生虛析構(gòu)函數(shù)表 ,當(dāng)在你出現(xiàn)上面的情況時會,自動釋放掉派生類的內(nèi)存,從而避免了內(nèi)存泄露。
新聞熱點
疑難解答