????? 私有基類的私有成員只能由基類的成員函數按規定引用。不能在基類之外訪問它們,因此它們在派生類中是隱藏的和不可訪問的,下面武林技術頻道小編告訴大家C++ 中私有繼承的作用。
C++ 中私有繼承的作用
私有繼承的
第一個規則:和公有繼承相反,如果兩個類之間的繼承關系為私有,編譯器一般不會將派生類對象轉換成基類對象。
第二個規則: 從私有基類繼承而來的成員都成為了派生類的私有成員,即使它們在基類中是保護或公有成員。
私有繼承的含義:私有繼承意味著 "用...來實現"。
如果使類D私有繼承于類B,這樣做是因為你想利用類B中已經存在的某些代碼,而不是因為類型B的對象和類型D的對象之間有什么概念上的關系。
因而,私有繼承純粹是一種實現技術。
私有繼承意味著只是繼承實現,接口會被忽略。如果D私有繼承于B,就是說D對象在實現中用到了B對象,僅此而已。
私有繼承在軟件 "設計" 過程中毫無意義,只是在軟件 "實現" 時才有用。
1、私有繼承的聲明形式:????
class Foo : private Bar { public: void fun(); // ... };
基類的公有和保護成員在派生類里都成為私有成員;承屬于is-a關系的一部分,而私有繼承屬于has-a關系的一部分?
2、在架構上私有繼承表達的是一種 'has?? a '關系,但與聚合有以下不同:
????? 私有繼承形式可能引入不必要的多重繼承???
????? 私有繼承形式允許訪問基類的保護(protected)成員???
????? 私有繼承形式允許派生類重寫基類的虛函數(多態)
3、盡可能用組合,萬不得已才用私有繼承
????? 通常你不會想訪問其他類的內部,而私有繼承給你這樣的一些的特權(和責任)。但是私有繼承并不有害。只是由于它增加了別人更改某些東西時,破壞你的代碼的可能性,從而使維護的花費更昂貴。
????? 本文是武林技術頻道小編介紹的C++ 中私有繼承的作用,相信大家都了解了吧。武林技術頻道將在后面的日子里,繼續為大家分享更多的知識。
新聞熱點
疑難解答
圖片精選