虛函式與多型章節總結

2021-08-20 22:31:52 字數 2196 閱讀 6077

一、基礎知識

1、多型性的基本概念

多型性是指乙個名字多種語義,或介面相同多種實現

過載函式是多型性的一種簡單形式

虛函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編

2動態聯編

(1)虛函式和基類指標

寫有關鍵字virtual的成員函式稱為虛函式,實現執行多型的關鍵是要說明虛函式,另外必須用基類指標呼叫派生類的不同實現版本。

例1:

#includeusing namespace std ;

class base

void who()

protected: char x;

} ;class first_d : public base

void who()

protected: char y;

} ;class second_d : public first_d

void who()

protected: char z;

} ;int main()

只能訪問基類繼承來的資料成員,如果想訪問派生類新增成員,可以把基類中的who改為虛函式,即在前面加virtual

注意:乙個虛函式,在派生類層介面相同的過載函式都保持虛特性

虛函式必須是類的成員函式

不能將友元說明為虛函式,但虛函式可以是另乙個類的友元

析構函式可以是虛函式,但建構函式不行

(2)虛函式的過載特性

在派生類中過載基類的虛函式要求函式名、返回型別、引數個數、

引數型別和順序完全相同,

如果僅僅返回型別不同,

c++認為是錯誤過載,

如果函式原型不同,僅函式名相同,丟失虛特性 

(3)、虛析構函式

建構函式不能是虛函式,析構函式可以,作用是指引delete運算子正確析構動態物件。

#includeusing namespace std ;

class a

} ;class b : public a

} ;int main()

這是普通析構函式,刪除ap時只能呼叫基類析構函式,應該在基類析構函式前加virtual析構

(4)注意:

必須首先在基類中定義虛函式。

派生類對基類中宣告虛函式重新定義時,關鍵字virtual可以不寫。

一般通過基類指標訪問虛函式時才能體現多型性。

乙個虛函式無論被繼承多少次,保持其虛函式特性。

虛函式必須是其所在類的成員函式,而不能是友元函式,也不能是靜態函式。

建構函式、內聯成員函式、靜態成員函式不能是虛函式。

例3:

#include using namespace std;

class a

virtual void show(){}

void show_name()

show為虛函式,在派生類中實現了覆蓋,主函式通過基類指標訪問物件成員,呼叫的是對應派生類的show函式

3、純虛函式和抽象類

不對虛函式做定義,而把它宣告為純虛函式,它的實現留給該基類的派生類去做,這是純虛函式的作用

純虛函式是乙個在基類中說明的虛函式,在基類中沒有定義, 要求任何派生類都定義自己的版本,純虛函式為各派生類提供乙個公共介面

純虛函式說明形式:

virtual  型別  函式名(參數列)= 0 ;

乙個具有純虛函式的基類稱為抽象類。 

例5:#includeusing namespace std ;

class figure

virtual void show_area() = 0 ;

};class ******** : public figure

{ public :

void show_area()

{ cout<<"******** with high "《在基類中定義了純虛函式,後面三個派生類裡每乙個都做出了自己的定義

二、心得:

通過學習,我學會了直接利用基類指標訪問同名成員的方式,但是必須要配合虛函式才能實現覆蓋,達到多型性的目的。這一方面的應用的話,主要可以用在繼承中同名成員的訪問,比如圖書管理系統的登入就可以用到這種方式,定義繼承之後,直接在主函式中呼叫基類指標去訪問管理和使用者的同名登入函式,這一部分我還不是特別理解和掌握,這個登入我正在努力嘗試去做,相信能夠利用好這方面的知識。

虛函式與多型總結

多型性 polymorphism 是指乙個名字,多種語義 或介面相同,多種實現。過載函式是多型性的一種簡單形式。虛函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編。冠以關鍵字 virtual 的成員函式稱為虛函式實現執行時多型的關鍵首先是要說明虛函式,另外,必須用。基類指標呼叫派生類的不同...

虛函式與多型總結

虛函式與多型性 1.多型性是指乙個名字,多種語義 或介面相同,多種實現。2.過載函式是多型性的一種簡單形式。3.虛函式允許函式呼叫與函式體的聯絡在進行時才進行,成為多型聯編。5.實現執行時多型的關鍵首先是要說明虛函式,另外,必須用基類指標呼叫派生類的不同實現版本 基類指標雖然獲取派生類物件位址,卻只...

多型與虛函式總結

多型性 polymorphism 是指乙個名字,多種語義 或介面相同,多種實現。過載函式是多型性的一種簡單形式。虛函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編。冠以關鍵字 virtual 的成員函式稱為虛函式 實現執行時多型的關鍵首先是要說明虛函式,另外,必須用 基類指標呼叫派生類的不...