1. 程式人生 > >第十四周閱讀程式:1-(2)

第十四周閱讀程式:1-(2)

/*
* 程式的版權和版本宣告部分
* 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就取代了其基類中的虛擬函式。

                   因此在使用基類指標指向派生類物件後,呼叫的是派生類的成員函式。