第十三周项目二 阅读修改关于交通工具类的程序,回答问题,以理解相关内容(1)
2016-05-21 12:31
465 查看
/*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.
回答:当基类的指针指向派生类时,用指针调用同名成员函数,执行的是基类的成员函数。
因为基类的成员函数不是虚函数,指针指向仍然是基类的,所以执行的是基类的成员函数。
相关文章推荐
- Python面向对象之类的定义与继承
- NYOJ 题目17 单调递增最长子序列
- ios的hitTest方法以及不规则区域内触摸事件处理方法
- 3.基本概念之-EMMC技术、TXE、PCD
- hdu4121/poj 4001 Xiangqi(模拟)
- bzoj 4602: [Sdoi2016]齿轮
- NYOJ 586 疯牛(最大化最小值)
- 悦海购O2O跨境电商
- 使用RegularExpressions去除HTML标签的字符串
- Python之路—Day2作业
- TLint for 虎扑体育 基于Dagger2+RxJava+Retrofit开发,采用MVP模式
- C# 委托的三种调用示例(同步调用 异步调用 异步回调)
- Surfaceflinger代码位置
- 数学类笔试题
- 不同系统的换行符号
- 自定义View之继承TextView绘制背景
- Android中解析XML
- 三种方法解决跨域问题
- 编程技巧 - elegant - 3
- 近期健康类(***)