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

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

运行结果:

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

run a vehicle.

回答:当基类的指针指向派生类时,用指针调用同名成员函数,执行的是基类的成员函数。

     因为基类的成员函数不是虚函数,指针指向仍然是基类的,所以执行的是基类的成员函数。 

0 0
原创粉丝点击