關於繼承,虛函式與多型性總結

2021-08-21 03:54:38 字數 3485 閱讀 6132

繼承總結:

1、基類和派生類

繼承的語法形式如下:

class 派生類名 : 基類名錶

;

基類名錶構成:訪問控制 基類名

訪問控制有3類:1)、public公有繼承    2)、private私有繼承    3)、protected保護繼承

2、訪問控制

乙個派生類公有繼承乙個基類時,基類中所有公有成員(由public定義的資料成員或成員函式)成為派生類的公有(public)成員,基類中所有保護成員(由protected定義的資料成員或成員函式)成為派生類的保護(protected)成員。

乙個派生類私有繼承乙個基類時,基類中所有公有成員和保護成員同時成為派生類的私有(private)成員。

乙個派生類保護繼承乙個基類時,基類中所有公有成員和保護成員同時成為派生類的保護(protected)成員。

3、重名成員

1)、派生類生類定義了與基類同名的成員,在派生類中訪問同名成員時遮蔽(hide)了基類的同名成員

2)、在派生類中使用基類的同名成員,顯式地使用類名限定符:類名::成員

4、基類的初始化

1)、在建立派生類物件時用指定引數呼叫基類的建構函式來初始化派生類繼承基類的資料

2)、派生類建構函式宣告:派生類建構函式(變元表):基類(變元表),資料成員1(變元表),…,資料成員n(變元表);

3)、建構函式執行順序:基類→物件成員→派生類

5、賦值相容規則

1)、賦值相容規則指在程式中需要使用基類物件的任何地方,都可以用公有派生類的物件來替代。

2)、在替代之後,派生類物件就可以作為基類的物件使用,但只能使用從基類繼承的成員。

3)、乙個派生類物件也是乙個基類物件,乙個基類物件可派上用場的地方,派生類物件一樣可派上用場。反之則不然。

6、多繼承

乙個類有多個直接基類的繼承關係稱為多繼承

一、多型性

多型性可以簡單概括為「乙個介面,多種行為」。

向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同的行為(即方法)。每個物件可以用自己的方式去響應共同的消     息。所謂訊息,就是呼叫函式,不同的行為就是指不同的實現,即執行不同的函式。這是一種泛型技術,即用相同的**實現不同的動   作。這體現了物件導向程式設計的優越性。

多型分為兩種:

1、編譯時多型:主要通過函式的過載和模板來實現。

2、執行時多型:主要通過虛函式來實現。

多型性(polymorphism)

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

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

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

二、動態聯編

1、虛函式和基類指標

寫有關鍵字virtual的成員函式稱為虛函式,實現執行多型的關鍵是要說明虛函式,另外必須用基類指標

呼叫派生類的不同實現版本。

2、虛函式的過載特性

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

引數型別和順序完全相同

如果僅僅返回型別不同,c++認為是錯誤過載

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

3、虛析構函式

建構函式不能是虛函式。建立乙個派生類物件時,必須從類層次的根開始,沿著繼承路徑逐個呼叫基類的建構函式

析構函式可以是虛的。虛析構函式用於指引 delete 運算子正確析構動態物件

三、純虛函式和抽象類

純虛函式是一種特殊的虛函式,

在許多情況下,在基類中不能對虛函式給出有意義的實現,而把它宣告為純虛函式,它的實現留給該基類的派生類去做。

這就是純虛函式的作用。

純虛函式是乙個在基類中說明的虛函式,在基類中沒有定義, 要求任何派生類都定義自己的版本

純虛函式為各派生類提供乙個公共介面

純虛函式說明形式:

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

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

多型性

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

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

基類指標雖然獲取派生類物件位址,卻只能訪問派生類從基類繼承的成員。

虛函式與多型性

虛函式與多型性

實驗內容 定義基類base,其資料成員為高h,定義成員函式disp 為虛函式,由基類派生出長方體類和圓柱類,並在兩個派生類中定義成員函式disp 為虛函式。在主函式中,用基類base定義指標p,用指標p動態呼叫虛函式disp 顯示面積。虛函式 它是基類中的成員函式,並在派生類中被過載。派生類中的虛函...

多型性與虛函式

1.函式過載 overloading 與靜態聯編 static binding 函式過載 overloading 指的是,允許多個不同函式使用同乙個函式名,但要求這些同名函式具有不同的參數列。參數列中的引數個數不同 參數列中對應的引數型別不同 參數列中不同型別引數的次序不同。例 intabs int...

虛函式與多型性

include stdafx.h include using namespace std class animal void sleep void breathe class fish public animal void fn animal pan int tmain int argc,tchar...