C++ 中私有繼承的作用
C++ 中私有繼承的作用
私有繼承的
第一個規(guī)則:和公有繼承相反,如果兩個類之間的繼承關(guān)系為私有,編譯器一般不會將派生類對象轉(zhuǎn)換成基類對象。
第二個規(guī)則: 從私有基類繼承而來的成員都成為了派生類的私有成員,即使它們在基類中是保護或公有成員。
私有繼承的含義:私有繼承意味著 "用...來實現(xiàn)"。
如果使類D私有繼承于類B,這樣做是因為你想利用類B中已經(jīng)存在的某些代碼,而不是因為類型B的對象和類型D的對象之間有什么概念上的關(guān)系。
因而,私有繼承純粹是一種實現(xiàn)技術(shù)。
私有繼承意味著只是繼承實現(xiàn),接口會被忽略。如果D私有繼承于B,就是說D對象在實現(xiàn)中用到了B對象,僅此而已。
私有繼承在軟件 "設(shè)計" 過程中毫無意義,只是在軟件 "實現(xiàn)" 時才有用。
1、私有繼承的聲明形式:
class Foo : private Bar { public: void fun(); // ... };
基類的公有和保護成員在派生類里都成為私有成員;承屬于is-a關(guān)系的一部分,而私有繼承屬于has-a關(guān)系的一部分
2、在架構(gòu)上私有繼承表達的是一種 'has a '關(guān)系,但與聚合有以下不同:
私有繼承形式可能引入不必要的多重繼承
私有繼承形式允許訪問基類的保護(protected)成員
私有繼承形式允許派生類重寫基類的虛函數(shù)(多態(tài))
3、盡可能用組合,萬不得已才用私有繼承
通常你不會想訪問其他類的內(nèi)部,而私有繼承給你這樣的一些的特權(quán)(和責任)。但是私有繼承并不有害。只是由于它增加了別人更改某些東西時,破壞你的代碼的可能性,從而使維護的花費更昂貴。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置