c 多型(學習記錄四)

2021-10-19 08:37:54 字數 1285 閱讀 5318

@c++多型(學習記錄四)

同乙個操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性,即採用基類的引用指向子類的物件。

多型解決了**復用,同時解決了專案緊耦合問題,提高程式的可擴充套件性。應用程式不必對每乙個派生類編寫功能呼叫,只需對抽象基類及逆行處理即可,提公升**復用性。

在類得定義中,前面有virtual關鍵字得成員函式就是 虛函式;

virtual關鍵字只用在類定義裡得函式宣告中,函式體不用;

建構函式和靜態成員函式不能是虛函式。

class base
表現一:派生類得指標可以賦給基類指標;

表現二:通過基類指標呼叫基類和派生類中得同名 虛函式 時:若該指標指向乙個基類得物件,那麼被呼叫是基類得虛函式;若該指標指向乙個派生類得物件,那麼被呼叫得是派生類得虛函式。

派生類的物件可以賦給基類引用;

通過基類引用呼叫基類和派生類中的同名虛函式時:若該引用引用的是乙個基類的物件,那麼被呼叫是基類的虛函式;若該引用引用的是乙個派生類的物件,那麼被呼叫的是派生類的虛函式,稱為多型。

每乙個有虛函式的類都有乙個虛函式表,該類的任何物件中都放著虛函式表的指標。虛函式表中列出了該類的虛函式位址。

關鍵字

virtual
class cbase 

};class cderived : public cbase //同名虛函式

}int main()

......

int main()

#include #include #include using namespace std;

class cshape

;class crectangle : public cshape

class ccircle : public cshape

;class c******** : public cshape

...cshape * pshapes[100]; //基類指標陣列存放指向各種派生類物件的指標

int mycompare(const void * s1, const void * s2);

int main()

C 多型學習記錄

純虛函式和抽象類 class base class son public base void test01 intmain 虛析構和純虛析構 1 多型使用時,如果子類中有屬性開闢到堆區 new 那麼父類指標在釋放時無法呼叫到子類的析構函式。上述問題的解決方式為 將父類中的析構函式改為虛析構或者純虛析...

C 學習記錄 多型

多型是物件導向的三大特性之一。多型 多型即呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。多型分為兩類 引入虛函式,就是為了通過函式重寫實現多型的效果。動態多型需要滿足的條件 動態多型的使用條件 include include using namespace std class base...

C 學習筆記之多型 多型的學習 多型學習

c 學習筆記之多型 多型的學習 多型學習 多型分為兩類 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 動態多型...