C++ 中私有繼承的作用
C++ 中私有繼承的作用
私有繼承的
第一個規(guī)則:和公有繼承相反,如果兩個類之間的繼承關系為私有,編譯器一般不會將派生類對象轉換成基類對象。
第二個規(guī)則: 從私有基類繼承而來的成員都成為了派生類的私有成員,即使它們在基類中是保護或公有成員。
私有繼承的含義:私有繼承意味著 "用...來實現(xiàn)"。
如果使類D私有繼承于類B,這樣做是因為你想利用類B中已經(jīng)存在的某些代碼,而不是因為類型B的對象和類型D的對象之間有什么概念上的關系。
因而,私有繼承純粹是一種實現(xiàn)技術。
私有繼承意味著只是繼承實現(xiàn),接口會被忽略。如果D私有繼承于B,就是說D對象在實現(xiàn)中用到了B對象,僅此而已。
私有繼承在軟件 "設計" 過程中毫無意義,只是在軟件 "實現(xiàn)" 時才有用。
1、私有繼承的聲明形式:
class Foo : private Bar
{
public:
void fun();
// ...
};
基類的公有和保護成員在派生類里都成為私有成員;承屬于is-a關系的一部分,而私有繼承屬于has-a關系的一部分
2、在架構上私有繼承表達的是一種 'has a '關系,但與聚合有以下不同:
私有繼承形式可能引入不必要的多重繼承
私有繼承形式允許訪問基類的保護(protected)成員
私有繼承形式允許派生類重寫基類的虛函數(shù)(多態(tài))
3、盡可能用組合,萬不得已才用私有繼承
通常你不會想訪問其他類的內部,而私有繼承給你這樣的一些的特權(和責任)。但是私有繼承并不有害。只是由于它增加了別人更改某些東西時,破壞你的代碼的可能性,從而使維護的花費更昂貴。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
C++函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別
函數(shù)指針是一個指針變量,它可以存儲函數(shù)的地址,然后使用函數(shù)指針,這篇文章主要介紹了C++中函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值2022-08-08
Qt5+QMediaPlayer實現(xiàn)音樂播放器的示例代碼
這篇文章主要為大家詳細介紹了如何利用Qt5和QMediaPlayer實現(xiàn)簡易的音樂播放器,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2022-12-12
C++用一棵紅黑樹同時封裝出set與map的實現(xiàn)代碼
set中存儲的一般為鍵K即可,而map存儲的一般都是鍵值對KV,也就是說他們結構是不同的,那么我們如何才能用一顆紅黑樹同時封裝出set與map兩種容器呢,那么接下來我們具體地來研究下STL庫中是怎樣實現(xiàn)的,并且進行模擬實現(xiàn),需要的朋友可以參考下2024-03-03

