第十三周项目二 阅读修改关于交通工具类的程序,回答问题,以理解相关内容(2)

来源:互联网 发布:激光剑多少钱淘宝网 编辑:程序博客网 时间:2024/06/06 09:26
/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:舒文超 * 完成日期:2016年4月30日 * 版本号:vc++6.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;}

运行结果:

(a)直接用对象访问成员函数:
run a vehicle.
run a car.
run a airplane.
(b)用指向基类的指针访问成员函数
run a car.
run a airplane.

回答:执行的是派生类的成员函数,因为其现在为虚函数,实现了多态性(一个同名的成员函数,在不同的类中有不同的执行结果。)

0 0