第十三周--阅读程序(2)

来源:互联网 发布:ajax获取servlet数据 编辑:程序博客网 时间:2024/05/17 08:10
/*  * Copyright (c) 2014, 烟台大学计算机学院  * All rights reserved.  * 文件名称:test.cpp  * 作    者:呼亚萍  * 完成日期:2015年6月1日  * 版 本 号: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类的定义修改为纯虚函数:

请回答:当基类的指针指向派生类时,用指针调用同名虚成员函数,执行的是基类的成员函数,还是派生类的成员函数?为什么会这样?什么是多态性?请结合本例的运行结果说明。答:执行的是派生类成员函数,因为将函数声明为虚函数后,可以通过基类的指针调用派生类的中的这个函数。多态性是指对同一个消息,不同的对象有不同的响应方式!请回答:当基类同名成员函数定义为纯虚函数后,发生了什么现象?为什么会这样?答:出现错误,基类变为抽象类后无法再建立对象!概括你对虚函数、多态性和抽象类的理解.答:虚函数:可以通过基类指针调用派生类的函数叫虚函数。多态性:对于同一消息,不同的对象有不同的响应方式。抽象类:含有纯虚函数的类,并且无法建立对象!
0 0