警告: deleting object of polymorphic class type which has non_virtual destructor
如果基類(lèi)里有虛函數(shù),定義了基類(lèi)指針指向派生類(lèi),就會(huì)需要定義基類(lèi)虛析構(gòu),這樣,基類(lèi)指針析構(gòu)的時(shí)候,就會(huì)先析構(gòu)派生類(lèi),再析構(gòu)基類(lèi)。
?
在用基類(lèi)指針指向派生類(lèi)時(shí),
在基類(lèi)析構(gòu)函數(shù)聲明為virtual的時(shí)候,delete基類(lèi)指針,會(huì)先調(diào)用派生類(lèi)的析構(gòu)函數(shù),再調(diào)用基類(lèi)的析構(gòu)函數(shù)。
在基類(lèi)析構(gòu)函數(shù)沒(méi)有聲明為virtual的時(shí)候,delete基類(lèi)指針,只會(huì)調(diào)用基類(lèi)的析構(gòu)函數(shù),而不會(huì)調(diào)用派生類(lèi)的析構(gòu)函數(shù),這樣會(huì)造成銷(xiāo)毀對(duì)象的不完全。
?
轉(zhuǎn)載于:https://www.cnblogs.com/amwuau/p/9149938.html
總結(jié)
以上是生活随笔為你收集整理的警告: deleting object of polymorphic class type which has non_virtual destructor的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Supervisor进程管理开机自启
- 下一篇: 校招准备-科研