c++远征之继承篇——隐藏,isa,虚析构函数
生活随笔
收集整理的這篇文章主要介紹了
c++远征之继承篇——隐藏,isa,虚析构函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、隱藏
- 父子關(guān)系。
- 成員(數(shù)據(jù)成員或者成員函數(shù))同名;
- 此時(shí)子類中會(huì)隱藏父類中的同名成員。
- 無法函數(shù)重載,只會(huì)隱藏!
- 如果想訪問父類中的同名成員,需要 :: 操作。
- 訪問父類同名函數(shù)的方法
二、is-a
(1)概念的理解
- 工人也是人,士兵也是人,隱形眼鏡也是眼鏡。
- 即派生類的對象,也是基類的對象。
(2)從存儲(chǔ)角度理解
- 只能取部分內(nèi)容賦值給父類,或者父類指針只能指向子類的部分內(nèi)容。
三、虛析構(gòu)函數(shù)
- 在父類和子類的析構(gòu)函數(shù)前,添加關(guān)鍵字virtual,即可構(gòu)成虛析構(gòu)函數(shù)。
(1)虛析構(gòu)函數(shù)的意義
int main(void) {person* p=&soldier;//……delete p; /*此時(shí)如果person類的析構(gòu)函數(shù),只是普通的析構(gòu)函數(shù),則只會(huì)調(diào)用person類的析構(gòu)函數(shù),而不會(huì)調(diào)用soldier類的析構(gòu)函數(shù) *這樣會(huì)造成內(nèi)存泄漏,因?yàn)閜erson類的析構(gòu)函數(shù),只是釋放了部分的內(nèi)存資源。 *解決方法是,在person類的析構(gòu)函數(shù)前,添加關(guān)鍵字virtual,表示這是虛析構(gòu)函數(shù)。則delet p時(shí),會(huì)調(diào)用person類和soldier類的析構(gòu)函數(shù)。 */return 0;}
總結(jié)
以上是生活随笔為你收集整理的c++远征之继承篇——隐藏,isa,虚析构函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从集合中选出一些元素组成子集合,使得这些
- 下一篇: c++ 度分秒相互转化