C++实验五 多态程序设计

2018-11-17 19:19

福 建 工 程 学 院

实 验 报 告

面向对象程序设计(C++)

专 业 电子信息工程 班 级 1303 座 号 姓 名 日 期 2015-11-26

实验五 多态程序设计

一、 实验目的:

理解运算符重载的概念和实质,掌握运算符重载函数 的定义方法,掌握运算符重载为类的成员函数的方法。

掌握虚函数的定义方法及其在实现多态性中的应用,理解静态连编和动态链编的区别。 二、 实验时间:2015-11-26 三、 实验地点:-- 四、 实验内容:

1.已知基类:

class Base{

public : virtual void iam() {cout<<”Base”<

(1)从Base类中派生出两个类,分别定义iam()函数,实现输出自己类名的功能。 (2)main函数中完成两项操作: ? 分别创建3个类的对象来调用iam()函数; ? 定义3个类的对象指针,将指向派生类的对象的指针赋值给Base *指针,而后

通过这些指针调用iam()函数。

#include using namespace std; class Base { public: };

class Base1 : public Base { public: };

class Base2 : public Base { public: };

int main() {

Base b; Base1 b1; void iam() { }

cout<<\<

cout<<\<

cout<<\<

}

Base2 b2;

Base *ptr[3] = {&b,&b1,&b2}; for(int i=0;i<3;i++)

ptr[i]->iam(); return 0;

2. 编写程序,写一个Shape抽象类,该类有求表面积(get_surface)和体积(get_volume)两个纯虚函数;由该类派生出圆柱体Cylinder,球体(Sphere),正方体(Cube),计算圆柱体,球体,正方体的表面积和体积。要求用抽象类实现。

#include using namespace std; const float PI = 3.14159; class Shape { public:

virtual double get_surface()=0; virtual double get_volume()=0; };

class Cylinder : public Shape { public:

Cylinder(double h,double r) : height(h),radius(r) { }

double get_surface() { }

double get_volume() { } private:

double height,radius; };

class Sphere : public Shape { public:

Sphere(double r) : radius(r) { }

double get_surface() { }

double get_volume() { } private:

return 4.0/3.0*PI*radius*radius*radius; return 4*PI*radius*radius;

cout<<\球的半径为:\<

return 2*PI*radius*radius + 2*PI*radius*height;

cout<<\圆柱的底面半径为:\<

double radius; };

class Cube : public Shape { public:

Cube(double l) : length(l) { }

double get_surface() { }

double get_volume() { } private:

double length; };

int main() { Cylinder cy(5,2);

cout<<\圆柱的表面积为:\<

cout<<\球的表面积为:\<

cout<<\正方体的表面积为:\<

return length*length*length; return 6*length*length;

cout<<\正方体的边长为:\<

3.在上题中,继续完善Cube类,对运算符+重载,使得+运算符可以实现两个正方体的相加(即边长的相加,可通过display函数显示加后的立方体的体积及表面积)。

#include using namespace std; const float PI = 3.14159; class Shape { public:

virtual double get_surface()=0; virtual double get_volume()=0; };

class Cylinder : public Shape { public:

Cylinder(double h,double r) : height(h),radius(r) { }

cout<<\圆柱的底面半径为:\<

double get_surface() { }

double get_volume() { } private:

double height,radius; };

class Sphere : public Shape { public:

Sphere(double r) : radius(r) { }

double get_surface() { }

double get_volume() { } private:

double radius; };

class Cube : public Shape { public:

Cube(double l) : length(l) { }

double get_surface() { }

double get_volume() { }

Cube operator+(const Cube &c) { } private:

double length; };

void display(Cube cc) {

cout<<\相加后正方体的表面积为:\<

length += c.length; return Cube(length);

return length*length*length; return 6*length*length;

cout<<\正方体的边长为:\<

cout<<\球的半径为:\<

return 2*PI*radius*radius + 2*PI*radius*height;


C++实验五 多态程序设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宁波镇海区十二五规划纲要(全文)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: