第十四周:閱讀程式1-(1)
阿新 • • 發佈:2019-02-01
/* * 程式的版權和版本宣告部分 * Copyright (c)2012, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱: Vehicle.cpp * 作 者:李巧麗 * 完成日期:2013 年5月31日 * 版本號: v1.0 * 對任務及求解方法的描述部分:略 * 輸入描述:略 * 問題描述:略 */ #include <iostream> using namespace std; class Vehicle //交通工具 { public: 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; }
執行結果:
心得體會:當基類的指標指向派生類時,用指標呼叫同名成員函式,執行的是基類的成員函式。問題在
於vp是指向Vehicle類物件的指標變數,即使讓它指向了airplane,但實際上vp指向的是airplane從基類繼承的部分。