第十三周閱讀程式 交通類純虛函式

2021-07-11 23:28:57 字數 1628 閱讀 8251

/* 

*作 者:劉金石

*完成日期:2023年5月22日

*問題描述:當基類的指標指向派生類時,用指標呼叫同名成員函式,

執行的是基類的成員函式,還是派生類的成員函式?為什麼會這樣?

*/

#include using namespace std;

class vehicle //交通工具

執行結果:

當基類的指標指向派生類時,用指標呼叫同名成員函式,執行的是派生類的成員函式,因為滿足型別相容規則

(2)如果將vehicle類的定義修改為虛函式,其餘不變,請寫出程式的執行結果

[cpp] view plain copy print?

class vehicle //(2) run()為虛函式

};

請回答:當基類的指標指向派生類時,用指標呼叫同名虛成員函式,執行的是基類的成員函式,還是派生類的成員函式?為什麼會這樣?什麼是多型性?請結合本例的執行結果說明。

回答:

回答:

當基類的指標指向派生類時,用指標呼叫同名成員函式,執行的是派生類的成員函式,因為

如果需要通過基類vehicle的指標vp指向派生類的物件,並訪問某個與基類同名的成員,那麼

就要在基類中將這個同名函式宣告為虛函式。這樣通過基類的指標vp就可以使屬於不同派生類

產生不同的行為,從而實現執行中的多型性。

(3)如果將vehicle類的定義修改為純虛函式,找出main()函式中將使編譯出錯的行刪除(或改為注釋),請寫出程式的執行結果,並在上機時對照理解

[cpp] view plain copy print?

class vehicle;

請回答:當基類同名成員函式定義為純虛函式後,發生了什麼現象?為什麼會這樣?

答:程式執行錯誤,

c:\documents and settings\administrator\my documents\test.cpp|13|error: stray '\243' in program|

c:\documents and settings\administrator\my documents\test.cpp|13|error: stray '\273' in program|

c:\documents and settings\administrator\my documents\test.cpp|13|error: pure-specifier on function-definition|

||=== build 失敗了: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

因為base為乙個抽象類不能定義乙個物件,vehicle v;錯誤。

第十三周閱讀程式 純虛函式

作 者 劉金石 完成日期 2016年5月21日 問題描述 虛析構函式練習 includeusing namespace std class base class firstderived public base class secondderived public base int main 執行結...

第十三周閱讀程式 虛函式

作 者 劉金石 完成日期 2016年5月21日 問題描述 虛函式練習 includeusing namespace std class a virtual void print const 程式分析 在本程式中,定義了類a和類b,其中b是a的派生類。在主函式中定義d1,以及指標p,又定義d2.在主函...

第十三周 閱讀程式2(2) 交通工具

問題及 檔名稱 x.cpp 作者 李楠 完成日期 2015年 5月 27日 版本號 v1.0 問題描述 2 如果將vehicle類的定義修改為虛函式,其餘不變,請寫出程式的執行結果 輸入描述 請回答 當基類的指標指向派生類時,用指標呼叫同名虛成員函式,執行的是基類的成員函式,還是派生類的成員函式?為...