1. 程式人生 > >第十四周閱讀程式3

第十四周閱讀程式3

/*
* 程式的版權和版本宣告部分:
* Copyright (c) 2013, 煙臺大學計算機學院
* All rights reserved.
* 檔名稱:test.cpp
* 作    者:任子儀
* 完成日期:2014年 5月 27日
* 版 本 號:v12.1
* 輸入描述:無
* 問題描述:。
* 程式輸出:
* 問題分析:略
* 演算法設計:略
*/

#include <iostream>
using namespace std;
class Vehicle
{
public:
    virtual void run() const = 0; //(3) run()為純虛擬函式,const意指其為常成員函式,並非純虛擬函式之必要
};
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;
}


當基類同名成員函式定義為純虛擬函式後,關於基類的函式都不能再呼叫

示例圖片: