C 虛函式 虛繼承 虛基類 多型 智慧型指標

2021-09-25 14:33:35 字數 1008 閱讀 4354

簡記如下:

1,什麼是虛函式

- 基類中被virtual關鍵字修飾的成員函式:基類希望被派生類重新定義、而不是被繼承(普通繼承)的函式

- 作用:實現多型。通過繼承基類中的虛函式,在子類中過載實現不同操作

2,什麼是虛繼承(虛擬繼承)

- d繼承自b和c,b和c都繼承自a,這時可以將b和c對a的繼承定義為虛繼承。

- 用於解決多重繼承,節省記憶體空間

虛繼承在什麼情況下使用?

- 子類繼承來自於同乙個公共祖先的多個父類的時候。 

3, 什麼是虛基類 (virtual base class)

- class c: virtual public a。 // 宣告類 c 是類 a 的公有派生類,a 是 c 的虛基類

- 解決的問題:從不同途徑繼承同一基類的子類,會產生多個基類的拷貝。導致:1,浪費儲存空間 2,二義性問題 

- 做法:繼承間接共同基類時只保留乙份成員。虛基類是在宣告派生類、指定繼承方式時宣告

-在最後的派生類中不僅要負責對其直接基類進行初始化,還要負責對虛基類初始化。c++ 編譯系統只執行最後的派生類對虛基類的建構函式的呼叫,而忽略虛基類的其他派生類(如類 b 和類 c)對虛基類的建構函式的呼叫,保證虛基類的資料成員不會被多次初始化。

4,什麼是智慧型指標

- 普通指標可能引起的問題:掛起引用(一塊被多個指標引用、被其中乙個指標釋放但其他指標不知道)、記憶體洩漏(從堆中申請了記憶體沒有釋放)

- 智慧型指標:用於動態分配記憶體,提供所有普通指標的介面;分配記憶體,當離開作用域時自動釋放已分配的記憶體。

- c++ 98的智慧型指標:auto_ptr。容易出錯(在函式間傳遞產生野指標),已被廢棄

- c++11智慧型指標:shared_ptr,unique_ptr,weak_ptr

5,什麼是多型

- 介面的多種不同實現方式。,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。

- 作用:將介面與實現分離。用共同的方法實現因個體差異而不同的策略

虛基類 虛擬繼承 虛函式?

前幾天師兄想考我什麼是虛基類的時候,我說是因為多重繼承中,如果出現菱形繼承 multiple inheritance diamond 不想要末端派生類有兩份最底層基類的資料的話,就得用虛擬繼承。結果居然被懟了,說我說的啥玩意兒?我還以為我記錯了,實際上是他把虛基類和含有虛函式的基類給混淆了。今天讀了...

虛繼承和虛基類

虛繼承主要解決在多重繼承中的菱形繼承問題,也就是說 b和c類同時繼承了a類,然後d類繼承了b,c類,那麼d類的虛表就會有重複的函式指標。include using namespace std 虛基類 class person person person string name name name e...

虛基類和虛繼承

這算得上我個人的乙個總結上,其實也算不上什麼原創,只是為了過濾一下前輩的經驗,加深一下自己的記憶 虛繼承的目的是讓某個類做出宣告,承諾願意共享它的基類,被共享的那個基類就是虛基類 includeusing namespace std class a protected int a class b p...