C++ 中私有繼承的作用
C++ 中私有繼承的作用
私有繼承的
第一個(gè)規(guī)則:和公有繼承相反,如果兩個(gè)類之間的繼承關(guān)系為私有,編譯器一般不會(huì)將派生類對(duì)象轉(zhuǎn)換成基類對(duì)象。
第二個(gè)規(guī)則: 從私有基類繼承而來(lái)的成員都成為了派生類的私有成員,即使它們?cè)诨愔惺潜Wo(hù)或公有成員。
私有繼承的含義:私有繼承意味著 "用...來(lái)實(shí)現(xiàn)"。
如果使類D私有繼承于類B,這樣做是因?yàn)槟阆肜妙怋中已經(jīng)存在的某些代碼,而不是因?yàn)轭愋虰的對(duì)象和類型D的對(duì)象之間有什么概念上的關(guān)系。
因而,私有繼承純粹是一種實(shí)現(xiàn)技術(shù)。
私有繼承意味著只是繼承實(shí)現(xiàn),接口會(huì)被忽略。如果D私有繼承于B,就是說(shuō)D對(duì)象在實(shí)現(xiàn)中用到了B對(duì)象,僅此而已。
私有繼承在軟件 "設(shè)計(jì)" 過(guò)程中毫無(wú)意義,只是在軟件 "實(shí)現(xiàn)" 時(shí)才有用。
1、私有繼承的聲明形式:
class Foo : private Bar { public: void fun(); // ... };
基類的公有和保護(hù)成員在派生類里都成為私有成員;承屬于is-a關(guān)系的一部分,而私有繼承屬于has-a關(guān)系的一部分
2、在架構(gòu)上私有繼承表達(dá)的是一種 'has a '關(guān)系,但與聚合有以下不同:
私有繼承形式可能引入不必要的多重繼承
私有繼承形式允許訪問(wèn)基類的保護(hù)(protected)成員
私有繼承形式允許派生類重寫(xiě)基類的虛函數(shù)(多態(tài))
3、盡可能用組合,萬(wàn)不得已才用私有繼承
通常你不會(huì)想訪問(wèn)其他類的內(nèi)部,而私有繼承給你這樣的一些的特權(quán)(和責(zé)任)。但是私有繼承并不有害。只是由于它增加了別人更改某些東西時(shí),破壞你的代碼的可能性,從而使維護(hù)的花費(fèi)更昂貴。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
C++函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別
函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,這篇文章主要介紹了C++中函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值2022-08-08淺談C++對(duì)象的內(nèi)存分布和虛函數(shù)表
下面小編就為大家?guī)?lái)一篇淺談C++對(duì)象的內(nèi)存分布和虛函數(shù)表。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源代碼
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Qt5+QMediaPlayer實(shí)現(xiàn)音樂(lè)播放器的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Qt5和QMediaPlayer實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-12-12C語(yǔ)言中實(shí)現(xiàn)協(xié)程案例
這篇文章主要介紹了C語(yǔ)言中實(shí)現(xiàn)協(xié)程案例,本文通過(guò)將協(xié)程與線程和異步回調(diào)進(jìn)行對(duì)比,以及具體實(shí)現(xiàn)案例,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++用一棵紅黑樹(shù)同時(shí)封裝出set與map的實(shí)現(xiàn)代碼
set中存儲(chǔ)的一般為鍵K即可,而map存儲(chǔ)的一般都是鍵值對(duì)KV,也就是說(shuō)他們結(jié)構(gòu)是不同的,那么我們?nèi)绾尾拍苡靡活w紅黑樹(shù)同時(shí)封裝出set與map兩種容器呢,那么接下來(lái)我們具體地來(lái)研究下STL庫(kù)中是怎樣實(shí)現(xiàn)的,并且進(jìn)行模擬實(shí)現(xiàn),需要的朋友可以參考下2024-03-03