第十三周实验报告(1)
2012-05-14 18:51
344 查看
/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李瑞
* 完成日期: 2012 年 5 月 12 日
* 版 本 号: v1.0
* 对任务及求解方法的描述部分
* 输入描述:……
* 问题描述:……
* 程序输出:……
* 程序头部的注释结束*/
结果:
结果:
结果:
感言:
虚函数实现多态性,对于同一消息,不同对象有不同响应方式。
纯虚函数,没有函数体,只有函数名字而不具备函数的功能,不能被调用。
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李瑞
* 完成日期: 2012 年 5 月 12 日
* 版 本 号: v1.0
* 对任务及求解方法的描述部分
* 输入描述:……
* 问题描述:……
* 程序输出:……
* 程序头部的注释结束*/
//(任务1.1) #include <iostream> using namespace std; class Vehicle { public: 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(); system("pause"); return 0; }
结果:
//(任务1.2)将Vehicle类的定义修改为虚函数,其余不变: #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(); system("pause"); return 0; }
结果:
//(任务1.3)如果将Vehicle类的定义修改为纯虚函数,找出main()函数中将使编译出错的行删除(或改为注释),请写出程序的执行结果,并在上机时对照理解 : #include <iostream> using namespace std; class Vehicle {public: virtual void run() const = 0; //(3) 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(); system("pause"); return 0; }
结果:
感言:
虚函数实现多态性,对于同一消息,不同对象有不同响应方式。
纯虚函数,没有函数体,只有函数名字而不具备函数的功能,不能被调用。
相关文章推荐
- C++程序设计实验报告(七十一)---第十三周任务三
- 第十三周实验报告2
- 第十三周实验报告任务2
- 第十三周实验报告(四)设计抽象类CSolid含有两个求表面积和体积的虚函数
- 第十三周实验报告(四)
- 第十三周实验报告(一)
- C++程序设计实验报告(七十二)---第十三周任务四
- 第十三周实验报告1
- 第十三周实验报告任务3
- 第十三周实验报告(四)
- 第十三周实验报告1
- 第十三周实验报告(3)
- 第十三周实验报告(任务四)【抽象类CSolid,含有两个求表面积及体积的纯虚函数】
- 第十三周实验报告4
- 第十三周实验报告2
- 第十三周实验报告2.1
- 第十三周实验报告(二)
- 第十三周实验报告1.4
- 第十三周实验报告任务4
- 《C++第十三周实验报告1-3》