第八章總結

2021-03-04 09:55:30 字數 2099 閱讀 4284

第八章多型性與虛函式

記憶:1,物件呼叫的成員函式由物件所屬類決定。

如:類a物件a所呼叫成員函式是a中定義的成員函式或從a的基類繼承來的成員函式。

2,類中未定義虛函式,通過指標、引用所呼叫函式由指標、引用所屬類決定。

若主函式修改後,執行結果如圖:

問題:為什麼指標p1,p2呼叫的print是a類中的print?

如何修改程式能使得p1呼叫a類中的print函式,p2呼叫b類中的print函式?

3,若將基類成員函式f定義為虛函式,派生類中重定義了f函式,基類指標指向派生類物件並通過指標呼叫f函式時,該基類指標所呼叫f是派生類中的f函式。

執行結果:

說明:p是基類指標,p指向了派生類物件,p所呼叫area函式為派生類中的area函式。

rc是基類引用,rc引用了派生類物件,rc所呼叫area函式為派生類中的area函式。

display(a)函式:a是基類物件,display中通過a呼叫的area是基類中的area函式。

display(p)函式:通過p呼叫的是派生類中的area函式。理解為什麼是派生類的area函式。

display(rc)函式:通過rc呼叫的是派生類中的area函式。理解為什麼是派生類的area函式。

4,若將基類成員函式f定義為虛函式,派生類中未重定義f函式,基類指向派生類物件並通過指標呼叫f函式時,該基類指標所呼叫f是基類中的f函式。

5,虛函式定義形式:在函式首部加virtual關鍵字。注意:

類的成員函式才可定義成虛函式,static成員函式不能定義為虛函式,建構函式不可定義為虛函式,析構函式可定義為虛函式,friend函式不是成員函式不可定義為虛函式,基類中定義的虛函式f若在派生類中重定義後f函式在派生類中自動為虛函式。

class a

{ public:

virtual void f(){…………}

};class b:public a

{ public:

void f(){………}

};a類中f函式是虛函式,b類中對f進行了重定義,b中的f函式也是虛函式。

6,通過類的物件或成員函式呼叫類的成員函式。

第乙個主程式執行結果:

執行結果說明:

定義物件c呼叫首先a的建構函式,a建構函式為空函式,無輸出,然後呼叫b的建構函式,b建構函式中呼叫了func函式,此時b類中沒有func函式,故而呼叫其基類a的func函式所以輸出「這是a的函式func。」,然後呼叫c的建構函式,c的建構函式為空函式,無輸出。

呼叫c.fun()時,c類中無fun函式,c物件呼叫其基類b的fun函式,輸出「這是b類的函式fun。」在b類的fun函式中又呼叫func函式,此時由於是c物件呼叫的fun函式,所以func也是由c物件呼叫的,所以此func是c物件的func,也就是c類中的func函式,所以又輸出「這是c類的函式func。

」此時主程式執行結束,呼叫c類析構函式,c類析構函式中呼叫了fund函式,並c類中定義了fund函式輸出「這是c的函式fund。」,然後呼叫b類的析構函式,其中又呼叫了fund函式,此時b類中未定義fund函式,則呼叫繼承自a類的fund函式,輸出「這是a類的函式fund。」最後呼叫a類的析構函式。

注意:若將類a中的virtual關鍵字去掉後主程式1的執行結果如下:

問題:1,請對照住程式1的輸出結果寫出主程式2,3的輸出結果。

2,若將程式中virtual關鍵字去掉之後,寫出主程式2,3的執行結果。

總結:對於析構函式和構造函式呼叫成員函式時,呼叫的是基類或自身的函式。

物件呼叫成員函式時呼叫的是物件所屬類的成員函式。

特別注意c.fun函式的呼叫。

7,純虛函式

若虛函式定義時,不給出函式體,定義為如下形式:

class 類名

; 此虛函式則稱為純虛函式。

若虛函式定義時,不給出函式體,定義為如下形式:

class 類名

};此虛函式則稱為空虛函式。

為了定義乙個類,然後在此類基礎上派生多個類進行相似操作,可將基類定義為抽象類,並將相似操作對應的函式定義為虛函式。可利用基類指標指向派生類物件,或將基類指標作函式引數,以實現函式可對多個類的物件進行操作。

8,寫出程式執行結果

9,寫出程式執行結果

10,請寫出程式執行結果

第八章總結2019

第八章 電功率知識總結 知識點 8.1 電能 w 1 應用 電能轉化為其他形式能 例 電燈 電能能 電動機 電風扇 電能能 電吹風吹熱風時 電能 能 電熱器 例 電飯鍋 電能 能 8.2 電功率 p 1 含義 表示的 2 定義 單位時間內叫電功率。例題 1 1kw h的電能可以供 pz220 100...

第八章懸架

1 懸架的組成 想一想 懸架的位置在哪?你能否總結出什麼是懸架?懸架是車架 或車身 與車橋 或車輪 之間一切傳力連線裝置的總稱。現代汽車的懸架雖有不同的結構形式,但一般都由彈性元件 減振器 導向機構等組成,轎車一般還有橫向穩定器。懸架的組成如圖9 8所示。圖9 8 懸架的組成 1 彈性元件 螺旋彈簧...

力學第八章

第八章習題 8.1.1 一鋼杆的橫截面積為5.0 10 4m2,所受軸向外力如圖所示,試計算a b,b c和c d之間的應力.f1 6 104 n f2 8 104 n f3 5 104 n f4 3 104 n 解 在ab之間取截面a,對a a段有 f f1 6 104 n 拉伸應力 在bc之間取...