第13周项目—阅读4
2015-05-29 15:13
337 查看
代码:
#include <iostream> using namespace std; class Vehicle { public: virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数 }; 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; } //当基类的指针指向派生类时,用指针调用同名成员函数,执行的是基类的成员函数 //当基类的指针指向派生类时,用指针调用同名虚成员函数,执行的是派生类的成员函数
//(3)如果将Vehicle类的定义修改为纯虚函数,Vehicle定义的对象出现错误,因为纯虚函数不可以定义对象。 // 去掉出错误的两行程序正常运行
(3)运行结果:
相关文章推荐
- SQl mirror 取消镜像命令如下
- 一、Unity3D 5.0.1-示例项目“汽车游戏”的展示及开发准备
- 精度计算-大数加大数
- 搭建本地Java服务器环境
- 49 款人脸检测/识别的API、库和软件
- iptables的CONNMARK与MARK
- about the yum conflicts at fedora 20
- Maven学习笔记
- Java数组
- java rmi解决的问题
- MySQL索引原理及慢查询优化
- 06、Spring_web.xml_CharacterEncodingFilter
- 消除ADB错误“more than one device and emulator”的方法
- 进程与线程之间的关系
- windows 如何查看端口占用情况?
- 说说什么是重构(二)重构的过程
- Java学习总结
- [Selenium] 使用自定义的FirefoxProfile
- 高性能网络编程1----accept建立连接
- [AIX] ksh中的命令行编辑