14周:虚函数练习

来源:互联网 发布:商务时空软件通科云盟 编辑:程序博客网 时间:2024/06/16 13:32
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作    者:李慧慧 * 完成日期: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;}


运行结果

将Vehicle类的定义修改为虚函数,其余不变class Vehicle {public: virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数};


运行结果:

将Vehicle类的定义修改为纯虚函数

#include <iostream>using namespace std;class Vehicle{public:virtual void run() const = 0; //(3) run()为纯虚函数};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;}


运行结果:

纯虚函数不需要函数体

原创粉丝点击