第十三周任務一之類的多型性

2021-06-06 11:07:27 字數 2168 閱讀 1054

1.1源程式:

/*(檔案注釋頭部開始) 

*程式的版權和版本宣告部分

*檔名稱:vehicle類

*作 者:2011級計114-3張宗佳

*完成日期:2023年5月14號

*版本號:vc

* 對任務及求解方法的描述部分

* 輸入描術:

* 問題描述:請寫出程式的執行結果,並在上機時對照理解

* 程式輸出:

* 程式頭部的注釋結束

*/

#include using namespace std;

class vehicle

實驗結果:

(a) 直接用物件訪問成員函式:

run a vehicle.

run a car.

run a airplane.

(b) 用指向基類的指標訪問成員函式:

run a vehicle.

run a vehicle.

請按任意鍵繼續. . .

1.2源程式:

/*(檔案注釋頭部開始) 

*程式的版權和版本宣告部分

*檔名稱:vehicle類

*作 者:2011級計114-3張宗佳

*完成日期:2023年5月14號

*版本號:vc

* 對任務及求解方法的描述部分

* 輸入描術:

* 問題描述:如果將vehicle類的定義修改為虛函式,其餘不變,請寫出程式的執行結果,並在上機時對照理解

* 程式輸出:

* 程式頭部的注釋結束

*/

#include using namespace std;

class vehicle

實驗結果:

(a) 直接用物件訪問成員函式:

run a vehicle.

run a car.

run a airplane.

(b) 用指向基類的指標訪問成員函式:

run a car.

run a airplane.

請按任意鍵繼續. . .

1.3源程式:

/*(檔案注釋頭部開始) 

*程式的版權和版本宣告部分

*檔名稱:vehicle類

*作 者:2011級計114-3張宗佳

*完成日期:2023年5月14號

*版本號:vc

* 對任務及求解方法的描述部分

* 輸入描術:

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

* 程式輸出:

* 程式頭部的注釋結束

*/

#include using namespace std;

class vehicle

; class car: public vehicle

實驗結果:

(a) 直接用物件訪問成員函式:

run a car.

run a airplane.

(b) 用指向基類的指標訪問成員函式:

run a car.

run a airplane.

請按任意鍵繼續. . .

總結:1.在任務1.1中,基類vehicle類中的成員函式沒有定義為虛函式,在主函式中定義的指標物件*p指向vehicle,而不指向其他兩個類,所以在執行

vp=&car;	vp->run();	vp=&airplane;	vp->run();

時,輸出的是run a vehicle.   run a vehicle.

2.在任務1.2中,vehicle類中的成員函式定義為虛函式,這樣在執行vp=&car; vp->run(); vp=&airplane; vp->run();時,在派生類中呼叫虛函式時,就取代了基類中的虛函式

3.在任務1.3中,vehicle類中的成員函式定義為純虛函式,純虛函式中沒有函式體,而含有純虛函式的基類被稱為抽象類,不能例項化,且在派生類中呼叫虛函式時,其虛函式就取代了基類中的虛函式

第十三周閱讀專案(4) 多型性與虛函式

1 include using namespace std class vehicle 交通工具 執行結果 學習心得 宣告的vp是vehicle類的指標,派生類能給基類賦值,而基類不能給派生類賦值,所以vp car vp run vp airplane vp run 最後還是輸出run a vehi...

第十三周 任務二

程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 抽象類 作 者 薛廣晨 完成日期 2012 年 5 月 11 日 版 本 號 x1.0 對任務及求解方法的描述部分 輸入描述 使用抽象類 問題描述 任務2 下面給出了基類animal和main 函式。任務2.1 根據main 函式給出的注釋提示,設...

第十三周任務(三)

include iostream includeusing namespace std class shape class circle public shape private double r double circle area const class rectangle public sha...