C 學習筆記 多型

2021-07-10 03:15:27 字數 1034 閱讀 8183

引言:

1.虛繼承:

如果乙個派生類從多個基類派生,而這些基類又有乙個共同的基類,則在對該基類中宣告的名字進行訪問時,可能產生二義性。

解決方案:虛繼承宣告,加乙個virtual 關鍵字   。

2.物件導向新需求

編譯器的做法不是我們期望的  如果用父類指標指向子類物件,再呼叫print()方法,均會呼叫父類中的print()方法。

而我們期望這樣做:

根據實際的物件型別來判斷重名函式的呼叫

如果父類指標指向的是父類物件則呼叫父類中定義的函式

如果父類指標指向的是子類物件則呼叫子類中定義的重名函式

物件導向中的多型:根據實際的物件型別決定函式呼叫語句的具體呼叫目標

多型:同樣的呼叫 語句有多種不同的表現形態

1. 指向父類物件                            void print()

virtual int value()

private:

int a;

};class b :public a

virtual int value()

private:

int b;

};class c

int cvalue()

private:

int c;

};void playobj(a *a1,c *c1)

else

}int _tmain(int argc, _tchar* argv)

多型的思想:

1.封裝:突破c語言函式的概念,用類做函式引數的時候,可以使用物件的屬性和物件的方法

2.繼承:可以復用**

3.多型:多型不光有繼承,還可以使用未來,境界高

實現多型的三個條件:

1.c語言中  間接賦值(*p)是指標存在的最大意義(指標指向某個變數,就是把某個變數位址賦給指標)

2.多型的三個條件:(在所有物件導向語言中均可使用)

1. 要有繼承

2. 要有虛函式重寫

3. 用父類指標(或父類引用)指向子類物件

C 多型學習筆記

看了一堆介紹多型的東西,腦子裡就記得幾個概念了。靜態多型,又叫早繫結,動態多型,應該是叫晚繫結。多型的價值在於使程式更簡潔 更高效。no virtual no 多型,virtual means 已多型。不要覺得問題 很沒用 你還就是說不出來。同樣的命令,不同的物件,做出不同的動作。這就得借助the ...

c 學習筆記 多型

這裡用乙個shape類 rectangle類 cirle類進行說明 virtual shape 虛析構函式 在動態申請空間時候 防止沒析構派生類 virtual double area 虛函式有藏的效果 virtual double zhouchang private double area dou...

C 學習筆記 多型

include iostream using namespace std 多型的思想 物件導向的三大概念 封裝 突破c函式的概念 用類做函式引數的時候可以使用物件的屬性和物件的方法 繼承 a b 復用 多型 可以使用未來 多型很重要 實現多型的三個條件 1 要有繼承 2 要有函式重寫 虛函式 vir...