定义一个图形基类类,并派生三角形类,长方形类

要求:l派生类通过重载实现二元运算“=”、“+”、“-”、分别实现赋值、加、减,加减为对应边的加减。l实现成员函数求面积、周长,派生类分别实现该函数、。(学号尾号为1、6... 要求:
l 派生类通过重载实现二元运算“=”、“+”、 “-”、 分别实现赋值、加、减,加减为对应边的加减。
l 实现成员函数求面积、周长,派生类分别实现该函数、。(学号尾号为1、6学生做),要求重载构造函数(一个默认构造、一个赋值边)及拷贝构造函数、
在主函数中实现调用这些成员函数,设计计算图形面积、周长函数 如double GetArea(&Base Picture);
展开
 我来答
xz宏定义
推荐于2018-03-19 · TA获得超过1029个赞
知道小有建树答主
回答量:1621
采纳率:100%
帮助的人:227万
展开全部
/*Shape是一亮蠢消个几何图形的基类,它至少有求自身周长函数Circumference()和
求自身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle类和
Rectangle类,分别继承基类Shape的Circumference()和Area(),并增加新的成员。
编写主函数,定义各派生类对象,要求用一个函数实现求多派生类对象的周长之和、面积之和。*/
#include<iostream.h>
#include<math.h>
#define PI 3.1415926
class CShape
{
public:
virtual float Circumference()=0;
virtual float Area()=0;
};
class CCircle:public CShape
{
public:
CCircle(float r1)
{
r=r1;
}
 float Circumference()
 {
         return (float)PI*r*2;
 }
 float Area()
 {
 return (float)PI*r*r;
 }
private:
float r;
};
//L = pi(1.5(a+b)-sqrt(ab)), 其中a,b分别为椭圆长轴和短轴。
class CEllipse:public CShape
{
public: 
CEllipse(float a1,float b1)
{
a=a1;
b=b1;
}
float Circumference()
{
float temp1=(float)(1.5)*(a+b);
float temp2=(float)sqrt(a*b);
        return (float)PI*(temp1-temp2);
}
float Area()
{
return (float)PI*a*b;
}
private:
float a;
float b;
};
//Triangle面积公式
//s=根号下:p(p-a)(p-b)(p-c) 其中p=1/2(a+b+c) 这个公式叫海伦公式 

class CTriangle:public CShape
{
public:
CTriangle(float a1,float b1,float c1)
{
a=a1;
b=b1;
c=c1;
}
float Circumference()
{
return (a+b+c);
}
float Area()
{
float p=(a+b+c)/2;
return (float)sqrt(p*(p-a)*(p-b)*(p-c));
}
private:
float a;
float b;
float c;
};
class CRectangle:public CShape
{
public:
CRectangle(float a1,float b1)
{
a=a1;
b=b1;
}
float Circumference()
{
return 2*(a+b);
}
float Area()
{
return (float)a*b;
}
private:
float a;
float b;
};

void main()
{
void sum(CShape *p[],int n,float &zc,float &mj);
CShape *p[4];
CCircle q(1.0);//圆
    CEllipse w(2.0,1.0);//椭圆
CTriangle e(3.0,4.0,5.0);//三角形
CRectangle r(1.0,2.0);//长方形
p[0]=&q;
p[1]=&w;
p[2]=&e;
    p[3]=&r;
float zc=0,mj=0;
sum(p,4,zc,mj);
cout<<"周长之和:"<<zc<<endl;
cout<<档好"面积之和:"<<mj<<endl;
}
void sum(CShape *p[4],int n,float &zc,float &mj)//分别计算周长,面积总和
{   
for(int i=0;i<n;i++)
{
        zc+=p[i]->Circumference();/*周长之和*/
mj+=p[i]->Area();/*面积之和*/
}
}
/*希望对你有帮助,上面敬知是题目要求,应该跟你的差不多吧*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式