第十三周阅读程序-交通工具类(1)
2016-05-23 12:15
239 查看
问题及代码:
运行结果:
回答:
当基类的指针指向派生类时,用指针调用同名成员函数,执行的是基类的成员函数,还是派生类的成员函数?为什么会这样?
答:执行的是基类的成员函数,因为基类里的同名成员函数没有声明为虚函数,所以虽然指向派生类,但还是调用基类的函数。
/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:zwj.cpp *作 者:张伟晶 *完成日期:2016年5月21日 *版 本 号: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; }
运行结果:
回答:
当基类的指针指向派生类时,用指针调用同名成员函数,执行的是基类的成员函数,还是派生类的成员函数?为什么会这样?
答:执行的是基类的成员函数,因为基类里的同名成员函数没有声明为虚函数,所以虽然指向派生类,但还是调用基类的函数。
相关文章推荐
- JAVA面向对象变成学习!
- Java设计模式(二):单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- 解决linux kernerl3.13 安装vmware10 vnet错误
- Spark Checkpoint写操作代码分析
- IOS 正则表达式(NSPredicate的使用)
- 课程练习三-1015-problem O
- TensorFlow教程06:MNIST的CNN实现——源码和运行结果
- HDoj2114 大数
- js中使用el表达式,表达式值中带有换行解决方法
- java初始化实质剖析
- Spring 笔记
- CSS3变换
- 异步加载的JS如何在chrome浏览器断点调试?
- Android 拍照、选择图片并裁剪
- Lex Yacc (一) 入门
- ViewPager 设置预加载数量可以防止销毁机制
- 接口与抽象类的区别和联系
- apache虚拟主机配置
- MRC下block循环嵌套暴露的内存问题
- [Android进阶]Android性能优化