您的位置:首页 > 移动开发 > IOS开发

第十三周实验报告(1)

2012-05-14 18:51 344 查看
/* 程序头部注释开始

* 程序的版权和版本声明部分

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


结果:



感言:

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

纯虚函数,没有函数体,只有函数名字而不具备函数的功能,不能被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iostream class system 任务 c