2010-05-29 15:46:20
| 分類:問題|
字型大小訂閱
私有繼承的
第乙個規則:和公有繼承相反,如果兩個類之間的繼承關係為私有,編譯器一般不會將派生類物件轉換成基類物件。
第二個規則:從私有基類繼承而來的成員都成為了派生類的私有成員,即使它們在基類中是保護或公有成員。
私有繼承的含義:私有繼承意味著 "用...來實現"。
如果使類d私有繼承於類b,這樣做是因為你想利用類b中已經存在的某些**,而不是因為型別b的物件和型別d的物件之間有什麼概念上的關係。
因而,私有繼承純粹是一種實現技術。
私有繼承意味著只是繼承實現,介面會被忽略。如果d私有繼承於b,就是說d物件在實現中用到了b物件,僅此而已。
私有繼承在軟體 "設計" 過程中毫無意義,只是在軟體 "實現" 時才有用。
1、私有繼承的宣告形式:
class foo : private bar
;
基類的公有和保護成員在派生類裡都成為私有成員;承屬於is-a關係的一部分,而私有繼承屬於has-a關係的一部分
2、在架構上私有繼承表達的是一種 'has a '關係,但與聚合有以下不同:
私有繼承形式可能引入不必要的多重繼承
私有繼承形式允許訪問基類的保護(protected)成員
私有繼承形式允許派生類重寫基類的虛函式(多型)
3、盡可能用組合,萬不得已才用私有繼承
通常你不會想訪問其他類的內部,而私有繼承給你這樣的一些的特權(和責任)。但是私有繼承並不有害。只是由於它增加了別人更改某些東西時,破壞你的**的可能性,從而使維護的花費更昂貴。
繼承的訪問控制 私有繼承
在私有繼承中,派生類以私有方式繼承基類。基類的公有成員和保護成員在派生類中成為私有成員,它們能被派生類的成員函式直接訪問,但不能被類外函式訪問,也不能在類外通過派生類的物件直接訪問。派生類不能直接訪問基類的私有成員,而只能派生類的成員函式中通過基類的公有或保護成員函式間接訪問。在設計基類時,通常都要...
C C private私有繼承
private繼承方式 1 基類成員對其物件的可見性 公有成員可見,其他成員不可見。2 基類成員對派生類的可見性 公有成員和保護成員是可見的,而私有成員是不可見的。3 基類成員對派生類物件的可見性 所有成員都是不可見的。所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。a con...
討論私有繼承
我們來看下面例子 class base 再來看私有繼承的派生類的訪問情況 class priv derv private base ok 相當於基類在此派生類的成員如下 class priv derv private base 因此我們可以按照訪問此類中的私有成員的方法來訪問基類的所有成員。clas...