C 多型性與虛函式定義注意事項

2021-10-17 14:43:34 字數 1524 閱讀 7763

學習筆記,主要**為《c++從入門到精通》,

1. 多型性

基類指標可以呼叫基類的成員變數或者成員函式,也可以呼叫繼承類的成員變數或者成員函式,這種多形態多種表現方式稱為多型性。

c++提供多型性,可以通過基類指標實現對所有派生類(包括直接派生和間接派生)的成員變數和成員函式進行「全方位」的訪問,尤其是成員函式。如沒有多型性,只能訪問成員變數。

2.虛函式

要在c++中實現多型性,成員函式必須是虛函式。虛函式使用非常簡單,只需要在函式宣告前加是virtual關鍵字即可。

結合**來描述簡單一點,使用vs code完成**編寫和執行,如下

#include

using

namespace std;

//基類worker

class

worker

內表示為:

name = wnme; age = wage; */

//虛函式宣告

virtual

void

myshow()

};//派生類people宣告

class

people

:public worker //public為寄生方式

//虛函式宣告,命名與基類worker相同

virtual

void

myshow()

};intmain()

輸出結果如下,由結果可知,…

3.虛函式定義注意事項

(1) 函式宣告與函式定義分開時,只需要在宣告處加上virtual關鍵字即可。

(2)派生類中成員函式對基類中同名函式具有覆蓋性,可以只將基類中的函式宣告為虛函式。

(3)當基類中定義了虛函式,而派生類中沒有定義新的函式來覆蓋此函式,那麼將直接使用基類的虛函式。

(4)只有派生類的虛函式覆蓋基類的虛函式才能構成多型性,既通過指標訪問派生類函式。

(5)建構函式不可以宣告為虛函式。

此外還有純虛函式,用於實現基類定義虛函式是不能給其賦予實際意義,以便於在派生類中重新定義該函式的,其語法格式為;

virtual 返回值型別  函式名 (函式引數) =

0 ;

其中「=0 」只是告訴編譯系統這是乙個純虛函式。

介面即為包含純虛函式的類,也稱為抽象類。目的是為其他類提供乙個可以繼承的適當的基類。注意抽象類不能用用來例項化物件,會產生編譯錯誤。

C 多型性與虛函式

物件導向程式設計中的多型性是指向不同的物件傳送同乙個訊息,不同物件對應同一訊息產生不同行為。在程式中訊息就是呼叫函式,不同的行為就是指不同的實現方法,即執行不同的函式體。也可以這樣說就是實現了 乙個介面,多種方法 從實現的角度來講,多型可以分為兩類 編譯時的多型性和執行時的多型性。前者是通過靜態聯編...

C 多型性 與 虛函式

1.運算子過載 運算子過載形式 1 過載為類的成員函式 運算子過載函式說明為類的成員函式的格式為 類名 operator 運算子 參數列 如 c1 c2 編譯器將給出的解釋為 c1.operator c2 該運算子過載函式僅僅有乙個引數,所以過載為成員函式時,雙目運算子僅有乙個引數。對於單目運算子,...

C 多型性與虛函式

多型性是物件導向程式設計的關鍵技術之一。利用多型性技術,可以呼叫同乙個函式名的函式,實現完全不同的功能。若程式語言不支援多型性,不能稱為物件導向的語言。在c 中有兩種多型性 1 定義格式 虛函式是乙個類的成員函式,定義格式如下 virtual 返回型別 函式名 參數列 說明 2 通過虛函式實現多型性...