c++程序设计报告(13-1)

来源:互联网 发布:美图秀秀为何没有mac版 编辑:程序博客网 时间:2024/06/07 11:21

/*
*实验内容:  
* 程序的版权和版本声明部分  
* Copyright (c) 2011, 烟台大学计算机学院学生  
* All rights reserved.  
* 文件名称:* 作 者: 杨坛坛  
* 完成日期: 2012 年 5 月 16日  
* 版 本号: vc2008
*问题描述:(1)如果将Vehicle类的定义修改为虚函数,其余不变

(2)如果将Vehicle类的定义修改为纯虚函数,找出main()函数中将使编译出错的行删除(或改为注释),
*/

#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

#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

#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;} 


运行结果:
1.1:
(a) 直接用对象访问成员函数:
run a vehicle.
run a car.
run a airplane.
(b) 用指向基类的指针访问成员函数:
run a vehicle.
run a vehicle.
请按任意键继续. . .
1.2:
(a) 直接用对象访问成员函数:
run a vehicle.
run a car.
run a airplane.
(b) 用指向基类的指针访问成员函数:
run a car.
run a airplane.
请按任意键继续. . .
1.3:
(a) 直接用对象访问成员函数:
run a car.
run a airplane.
(b) 用指向基类的指针访问成员函数:
run a car.
run a airplane.
请按任意键继续. . .

感言:虚函数:允许在派生类中重新定义与基类同名的函数,并可以通过基类指针或引用来访问基类和派生类中的同名函数。
多态性:具有不同功能的函数可以用同一个函数名,用一个函数名调用不同能容的函数。即:一个接口,多种方法。
抽象类:不用来定义对象而只作为一种基本类型用作继承的类(一个类族的公共基类)

原创粉丝点击