c++博大精深,封裝,繼承,多型是c++的三大特徵,c++很強大,但是強大的東西理解起來就是要比不強大的難一點,所以現在看看
c++的多型:
多型條件:
1.必須是公有繼承。
2.必須是虛函式
乙個好的程式要對修改封閉,對擴充套件開放,虛函式就能很好的解決這個問題,
基類的指標指向子類的物件並呼叫子類的同名函式,要實現這種效果,就得用虛函式
關鍵字:virtual
虛函式的注意點:
1.必須是普通成員函式(可以是常成員,不能是靜態成員,不能使全域性函式)
2.內聯函式不會是虛函式
3.建構函式不能為虛函式(析構函式一般宣告為為虛函式)
經典例子:
1 #include 23using
std::cout;
4using
std::cin;
5using
std::endl;67
//基類
8class
fruit
13};
1415
class banana: public fruit
20};
2122
fruit
27};
2829
class pear: public
fruit
34};
3536
class peach: public
fruit
41};
4243
int main(void)44
;5051for(int i = 0; i < 4; i++)
52 frt[i]->print(); //
乙個基類指標,分別呼叫不同的子類物件(動態多型)
5354 system("
pause");
55return0;
56 }
c 虛函式經典例子演示
c 博大精深,封裝,繼承,多型是c 的三大特徵,c 很強大,但是強大的東西理解起來就是要比不強大的難一點,所以現在看看 c 的多型 多型條件 1.必須是公有繼承。2.必須是虛函式 乙個好的程式要對修改封閉,對擴充套件開放,虛函式就能很好的解決這個問題,基類的指標指向子類的物件並呼叫子類的同名函式,要...
C 虛函式 純虛函式
1 基本概念 虛函式是在基類中使用關鍵字virtual宣告的函式。在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式。我們想要的是在程式中任意點可以根據所呼叫的物件型別來選擇呼叫的函式,這種操作被稱為動態鏈結,或後期繫結。您可能想要在基類中定義虛函式,以便在派生類中重新定義該函...
C 虛函式 純虛函式
1.析構函式是否應為虛函式問題?2.成員函式的虛函式問題?3.析構函式是否可以為純虛函式問題?說明 僅在使用父類指標指向子類物件時有區別 當析構函式非虛函式時,使用父類指標指向子類物件,在析構時將不會呼叫子類析構函式 當析構函式是虛函式時,使用分類指標指向子類物件,在析構時會呼叫子類析構函式,且呼叫...