第十四周閱讀程式:1-(2)
阿新 • • 發佈:2019-02-02
/* * 程式的版權和版本宣告部分 * Copyright (c)2012, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱: Vehicle.cpp * 作 者:李巧麗 * 完成日期:2013 年5月31日 * 版本號: v1.0 * 對任務及求解方法的描述部分:略 * 輸入描述:略 * 問題描述:略 */ #include <iostream> using namespace std; class Vehicle //交通工具 { public: virtual void run() const { cout << "run a vehicle. "<<endl; } }; class Car: public Vehicle //汽車 { public: void run() const { cout << "run a car. "<<endl; } }; class Airplane: public Vehicle //飛機 { public: void run() const { cout << "run a airplane. "<<endl; } }; int main() { cout<<"(a) 直接用物件訪問成員函式: "<<endl; Vehicle v; v.run(); Car car; Airplane airplane; car.run(); airplane.run(); cout<<"(b)用指向基類的指標訪問成員函式: "<<endl; Vehicle *vp; vp=&car; vp->run(); vp=&airplane; vp->run(); return 0; }
執行結果:
心得體會:在基類中的run被宣告為虛擬函式,在宣告派生類事被過載,這時派生類的同名函式run就取代了其基類中的虛擬函式。
因此在使用基類指標指向派生類物件後,呼叫的是派生類的成員函式。