C++繼承體系
一個繼承體系的根數目,深度和扇出數是否合適,要取決於這個體系要模擬的領域和這個領域所需要的特性,繼承體系就好比一個有向圖。
1、根節點:某個類如果沒有基類,既不是任何類的子類,那麼在有向圖中就是根節點。
2、類深度:從根節點到該類最長的可能派生路徑中,所有經過類的數目,也就是說繼承的深度,有多少層的繼承。
3、類的扇出:在給定的繼承系統中,從這個類直接派生的類的數目,即該類的直接子類的數目。
派生的利弊
派生也就是繼承可以提高程式碼的閱讀性,同時增加程式碼的效率,使得程式碼更加的抽象。但也同時帶來了另外些不足,介面體系總會帶來許多虛派生和虛擬函式,程式的效率上會有所下降。
工廠設計模式就是介面設計類的一種體現,設計好各個模板,使用者需要什麼再進行細節化。
控制程式碼類
控制程式碼的方式也是常用的方式,所謂的控制程式碼就是,不是通過繼承的方式,而是通過在類裡面例項化一個指標物件。控制程式碼一般是非介面類!
模板和繼承
模板和繼承是C++的兩個強大特性,對於類體系的設計究竟應該基於模板還是基於繼承這個問題,C++程式設計師卻常常使感到疑惑,甚至混淆不清,模板和繼承設計出來的結果有時候卻很大。
例如對於stack模板設計,基於模板主要是型別不同。而基於抽象基類的派生設計存在比較多不足,在這一點上基於模板的設計更加簡潔直接,沒有缺陷。事實上繼承是存在很多弊端的,會使得程式碼的效率低下。
總結
雖然直接編寫或者是繼承體系是最容易實現的型別,又是最高效率。但是介面體系,物件工廠和控制程式碼體系都會利於程式庫版本之間的連結相容性。
能夠使用模板的時候就儘量選擇模板,防止不理智的使用繼承。
相關文章
- Request繼承體系繼承
- C++繼承C++繼承
- C++ | 類繼承C++繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- C++中的繼承C++繼承
- C++ 虛繼承 物件記憶體佈局C++繼承物件記憶體
- 簡單聊聊BeanFactory繼承體系Bean繼承
- C++ 整理15_繼承C++繼承
- C++ protected繼承意義C++繼承
- C++學習筆記——C++ 繼承C++筆記繼承
- C++高階教程之繼承得本質:單繼承(一)C++繼承
- springmvc中Dispatchservlet繼承體系詳解SpringMVCServlet繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- c++中的繼承關係C++繼承
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- c++繼承,隱藏(重定義)C++繼承
- [c++] 繼承和多型整理二C++繼承多型
- C++繼承時的修飾符C++繼承
- C++的核心特性:繼承機制C++繼承
- 【c++基礎】菱形繼承問題C++繼承
- 菱形繼承,虛繼承繼承
- 原型,繼承——原型繼承原型繼承
- C++ 多級繼承與多重繼承:程式碼組織與靈活性的平衡C++繼承
- C++ class 和 struct 可以相互繼承嗎C++Struct繼承
- C++ exception 異常類繼承關係C++Exception繼承
- 多繼承 與 多重繼承繼承
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- C++虛繼承原理與類佈局分析C++繼承
- 詳解C++中繼承的基本內容C++中繼繼承
- 繼承繼承
- EventLoopGroup事件迴圈組(執行緒組)繼承體系OOP事件執行緒繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 類的繼承_子類繼承父類繼承
- C++單繼承、多繼承情況下的虛擬函式表分析C++繼承函式
- JavaScript繼承JavaScript繼承
- javascript:繼承JavaScript繼承
- python繼承Python繼承