引言:
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...