public protect private继承
1.?public繼承被稱為類型繼承(type?inheritance)。往往反映is-a關系。
2.?protected繼承基類的所有公有成員都成為派生類的protected成員。這意味著它們可以被后來從該類派生的類訪問,但不能在層次結構之外被訪問。
3.?private繼承被稱為實現繼承(implementation?inheritance)。派生類提供自己的公有接口,重用基類的實現。?
?
數據成員的訪問域變化:
1.?public繼承的話,原來父類的public?,protected成員繼承到子類中,類型不變員
2.?protected繼承的話,原來父類的public?,protected成員繼承到子類中,并成為protected類型成員
3.?private繼承的話,原來父類的public?,protected成員繼承到子類中,并成為private類型成員
PS一下
理想情況下,是能不用public就不用,因為一旦public就引發一系列如client可以用base?pointer去new?inherit?class,則dtor需要是virtual的問題
但大多數情況下都是public的情況,大家對此也比較熟悉,所以下面談談不常見的情況
在private?inheritance時,如果不存在必須實現virtual?method的情況下,推薦選擇composition,避免了未來可能的multi?inheritance導致出現的討厭的菱形結構從而引發出現的C++陰暗面:?virtual?inheritance,即不要因為只是想少敲點代碼而失去了良好的設計
protected和private區別在于:如果只是為了重用code,在不能composition的情況下則優先考慮private,除非派生類還會需要或是有可能會被其他類繼承的話,才需要變成protected。
轉載于:https://www.cnblogs.com/songQQ/archive/2009/08/26/1554700.html
總結
以上是生活随笔為你收集整理的public protect private继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSONArray.fromObject
- 下一篇: 自动添加注释