C 繼承體系

2021-08-04 11:51:26 字數 739 閱讀 2416

乙個繼承體系的根數目,深度和扇出數是否合適,要取決於這個體系要模擬的領域和這個領域所需要的特性,繼承體系就好比乙個有向圖。

1、根節點:某個類如果沒有基類,既不是任何類的子類,那麼在有向圖中就是根節點。

2、類深度:從根節點到該類最長的可能派生路徑中,所有經過類的數目,也就是說繼承的深度,有多少層的繼承。

3、類的扇出:在給定的繼承系統中,從這個類直接派生的類的數目,即該類的直接子類的數目。

派生也就是繼承可以提高**的閱讀性,同時增加**的效率,使得**更加的抽象。但也同時帶來了另外些不足,介面體系總會帶來許多虛派生和虛函式,程式的效率上會有所下降。

工廠設計模式就是介面設計類的一種體現,設計好各個模板,使用者需要什麼再進行細節化。

控制代碼的方式也是常用的方式,所謂的控制代碼就是,不是通過繼承的方式,而是通過在類裡面例項化乙個指標物件。控制代碼一般是非介面類!

模板和繼承是c++的兩個強大特性,對於類體系的設計究竟應該基於模板還是基於繼承這個問題,c++程式設計師卻常常使感到疑惑,甚至混淆不清,模板和繼承設計出來的結果有時候卻很大。

例如對於stack模板設計,基於模板主要是型別不同。而基於抽象基類的派生設計存在比較多不足,在這一點上基於模板的設計更加簡潔直接,沒有缺陷。事實上繼承是存在很多弊端的,會使得**的效率低下。

雖然直接編寫或者是繼承體系是最容易實現的型別,又是最高效率。但是介面體系,物件工廠和控制代碼體系都會利於程式庫版本之間的鏈結相容性。

能夠使用模板的時候就盡量選擇模板,防止不理智的使用繼承。

IO繼承體系

io繼承體系 reader bufferedreader reader in 輸入緩衝流 linenumberreader reader in getlinenumber setlinenumber inputstreamreader inputstream in,string charsetnam...

C 繼承體系中的名稱覆蓋

首先乙個簡單的樣例 int x int f 在上述 中。函式f的區域性變數x掩蓋了全域性變數x。這得從 c 的名字查詢機制 說起,首先。在函式f的區域性作用域中查詢。甚至是語句塊 假設不存在,到上一層的作用域再進行查詢,該命名空間中查詢,最後是全域性作用域。在類的繼承體系中,名字覆蓋問題也是非常困擾...

C 繼承體系中的記憶體分段

綜述與目錄 討論這個問題之前我們先明確類的結構,乙個類的大概組成,下面的很多分類名詞都是我個人杜撰,為的就是讓讀者看懂能夠區分,下面分別分類 目錄 空類不含任何成員變數,也不繼承某個基類。結構類像c語言中結構體一樣,要麼只包含基本資料型別,要麼是其他構造型別的巢狀,或者兩者兼而有之。派生類有至少乙個...