第十三周实验报告(1)

来源:互联网 发布:js中如何实现继承 编辑:程序博客网 时间:2024/05/21 03:18
/* 程序头部注释开始
* 程序的版权和版本声明部分
* 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;} 


结果:

感言:

虚函数实现多态性,对于同一消息,不同对象有不同响应方式。 

纯虚函数,没有函数体,只有函数名字而不具备函数的功能,不能被调用。

原创粉丝点击