c++运算符重载和多态性实验报告(2)

2018-11-19 22:45

complex c1(2,3),c2(3,4),c3(3,4); cout<<\ cout<

cout<<\ cout<

测试结果:

3.利用虚函数实现的多态性来求四种几何图形的面积之和。这四种几何图形是:三角形、矩形、正方形和圆。几何图形的类型可以通过构造函数或通过成员函数来设置。

⑴分析

计算这四种几何图的面积公式分别是:

三角形的边长为W,高为H时,则三角形的面积为W* H/2;矩形的边长为W,宽为H时,则其面积为W* H;正方形的边长为S,则正方形的面积为S*S;圆的半径为R,其面积为 3.1415926 *R *R。

为设置几何图形的数据并求出几何图形的面积,需要定义一个包含两个虚函数的类: class Shape {public: virtual float Area( void) =0; //求面积 virtual void Setdata(float ,float =0) =0; //设置图形数据 };

因面积的计算依赖于几何图形,故在类中只能定义一个纯虚函数Area。同理,设置几何图形数据的函数Setdata也只能定义为纯虚函数。

把这个基类派生出其它几何图形类。如派生出的三角形类为:

class Triangle:public Shape { float W,H; //三角形边长为W,高为H public: Triangle(float w=0,float h=0){ W=w; H = h; } float Area( void){ return W*H/2; } void Setdata(float w,float h=0){ W=w; H = h; } };

参考程序:

#include #define PI 3.1415926 using namespace std;

class Shape { public: virtual float Area( void) =0; //纯虚函数,求面积 virtual void show(void) =0; //纯虚函数,显示数据 };

class Triangle:public Shape { float W,H; //三角形边长为W,高为H public: Triangle(float w=0,float h=0){ W=w; H = h; } float Area( void){ return W*H/2; } void show() { cout<<\三角形:\边长:\ 高:\ 三角形面积:\ } };

class Rectangle:public Shape { float W,H; public: Rectangle(float w=0,float h=0):W(w),H(h){} float Area(void){ return W*H; } void show() { cout<<\矩形:\ 长:\ 宽:\

<<\ 矩形面积面积:\}

};

class Square:public Shape { float W; public:

Square(float w=0):W(w){} float Area(void){ return W*W; } void show() { cout<<\正方形:\ 边长:\ 正方形面积:\} };

class Circle:public Shape { float radius; public: Circle(float r):radius(r){} float Area(void){ return PI*radius*radius/2; } void show() { cout<<\圆:\ 半径:\ 圆面积:\} };

void main()

{ Shape *S; //抽象类,只能定义指针,不能定义对象 Triangle T(4,6); //设置三角形 Rectangle R(3,4); //设置长方形 Square Sq(6); //设置正方形 Circle C(3); //设置圆 S=&T; S->show(); S=&R; S->show(); S=&Sq; S->show(); S=&C; S->show(); }

测试结果:


c++运算符重载和多态性实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:读资本论有感

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

马上注册会员

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