/*
*作 者:劉金石
*完成日期: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類的定義修改為虛函式,其餘不變,請寫出程式的執行結果 輸入描述 請回答 當基類的指標指向派生類時,用指標呼叫同名虛成員函式,執行的是基類的成員函式,還是派生類的成員函式?為...