《第十三周实验报告任务1》
2012-05-13 12:26
525 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 虚函数和纯虚函数的体会
* 作 者: 刘江波
* 完成日期: 2012 年 5 月 13 日
* 版 本 号: v.05131
* 对任务及求解方法的描述部分
* 问题描述:
【任务1】阅读下面的程序
(任务1.1)请写出程序的执行结果,并在上机时对照理解
(任务1.2)如果将Vehicle类的定义修改为虚函数,其余不变,请写出程序的执行结果,并在上机时对照理解
class Vehicle
{public:
virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数
};
(任务1.3)如果将Vehicle类的定义修改为纯虚函数,找出main()函数中将使编译出错的行删除(或改为注释),请写出程序的执行结果,并在上机时对照理解
class Vehicle
{public:
virtual void run() const = 0; //(3) run()为纯虚函数
};
(任务1.4)提交博文,记录实验过程和结果,用自己的话概括你对虚函数、多态性和抽象类的理解。
* 程序头部的注释结束
*/
总结:
(1)任务1.1和任务1.2比较
任务1.2在基类中使用了虚函数,这样可以用指向基类的指针来灵活访问派生类中同名的成员函数,是程序易于理解易于读取。
(2)通过任务1.3的操作我明白了纯虚函数是不能被调用的,包含纯虚函数的类无法建立对象;
(3)抽象类的作用是作为一个类族的共同基类。
(4)动态多态性是通过虚函数(virtual function)实现的,通过指向基类的指针来灵活访问派生类中同名的成员函数,实现不同的功能。
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 虚函数和纯虚函数的体会
* 作 者: 刘江波
* 完成日期: 2012 年 5 月 13 日
* 版 本 号: v.05131
* 对任务及求解方法的描述部分
* 问题描述:
【任务1】阅读下面的程序
(任务1.1)请写出程序的执行结果,并在上机时对照理解
(任务1.2)如果将Vehicle类的定义修改为虚函数,其余不变,请写出程序的执行结果,并在上机时对照理解
class Vehicle
{public:
virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数
};
(任务1.3)如果将Vehicle类的定义修改为纯虚函数,找出main()函数中将使编译出错的行删除(或改为注释),请写出程序的执行结果,并在上机时对照理解
class Vehicle
{public:
virtual void run() const = 0; //(3) run()为纯虚函数
};
(任务1.4)提交博文,记录实验过程和结果,用自己的话概括你对虚函数、多态性和抽象类的理解。
* 程序头部的注释结束
*/
#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; }
#include <iostream> using namespace std; class Vehicle { public: virtual void run() const = 0; }; 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)任务1.1和任务1.2比较
任务1.2在基类中使用了虚函数,这样可以用指向基类的指针来灵活访问派生类中同名的成员函数,是程序易于理解易于读取。
(2)通过任务1.3的操作我明白了纯虚函数是不能被调用的,包含纯虚函数的类无法建立对象;
(3)抽象类的作用是作为一个类族的共同基类。
(4)动态多态性是通过虚函数(virtual function)实现的,通过指向基类的指针来灵活访问派生类中同名的成员函数,实现不同的功能。
相关文章推荐
- 第十三周实验报告(任务二)【虚函数与抽象类的应用】
- C++程序设计实验报告(七十二)---第十三周任务四
- 第十三周实验报告 任务四
- 第十三周实验报告任务2
- 第十三周实验报告任务3
- 第十三周实验报告任务4
- 《第十三周实验报告任务2》
- 第十三周实验报告任务1
- 第十三周实验报告(任务三)【抽象基类Shape】
- 第十三周实验报告(任务一)
- 第十三周实验报告(任务二)
- 《第十三周实验报告任务3》
- 第十三周实验报告(任务三)
- 第十三周实验报告(任务四)【抽象类CSolid,含有两个求表面积及体积的纯虚函数】
- 第十三周实验报告 任务一
- 第十三周实验报告(任务一)【虚函数、多态性、抽象类】
- 第十三周实验报告 任务二(1)
- 《第十三周实验报告任务4》
- C++程序设计实验报告(六十九)---第十三周任务一
- 第十三周实验报告 任务二(2)