程序题.写一个C++程序,定义抽象基类Shape,由它派生出一个基类Point,再由Point派生出2个派生类

程序题.写一个C++程序,定义抽象基类Shape,由它派生出一个基类Point,再由Point派生出2个派生类:Circle(圆形),Rectangle(矩形),用一个函... 程序题.写一个C++程序,定义抽象基类Shape,由它派生出一个基类Point,再由Point派生出2个派生类:Circle(圆形),Rectangle(矩形),用一个函数Area分别输出以上二者的面积,2个图形的数据在定义对象时给定。并要求用+运算符对矩形长度,宽度重载,得到两个矩形的长度和与宽度和。
急求完整代码
展开
 我来答
叔叔不骗你
2010-12-28 · TA获得超过852个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:362万
展开全部
#include<iostream.h>
#include<cmath>
const double pi=3.14;
class Shape//抽象基类
{
public:
virtual void display()=0;
};

class Point:public Shape
{
public:
void display(){};
};

class Circle:public Point
{
private:
double r;
public:
void set(double r)
{ r=r;}
double area(double r)
{
return pi*r*r;
}
void display()
{
cout<<"圆的面积是:"<<area(r)<<endl;
}
};

class Tectangle:public Point
{
private:
double temp[2];
double length;
double width;
public:
void display();
double area(double l,double w)
{
return l*w;
}
void set(double l=0,double r=0)
{ temp[0]=length=l;
temp[1]=width=r;}
Tectangle operator+(const Tectangle &other);//函数重载
void calculate();//输出两个矩形的长度和与宽度
};

void Tectangle::calculate()
{
for(int i=0;i<2;i++)
cout<<temp[i]<<"\t";
}

void Tectangle::display()
{
cout<<"矩形面积:"<<area(length,width)<<endl;
}

Tectangle Tectangle::operator+(const Tectangle &other)
{
Tectangle tect;
tect.temp[0]=temp[0]+other.temp[0];
tect.temp[1]=temp[1]+other.temp[1];
return tect;
}

void main()
{
double r,length,width;
Circle cir;
Tectangle tect1,tect2,tect3;
cout<<"请输入圆形半径r:"<<endl;
cin>>r;
cir.set(r);
cir.display();

cout<<"请输入1矩形长、宽:"<<endl;
cin>>length>>width;
tect1.set(length,width);
tect1.display();

cout<<"请输入2矩形长、宽:"<<endl;
cin>>length>>width;
tect2.set(length,width);
tect2.display();

tect3=tect1+tect2;
cout<<"两个矩形的长度和与宽度和分别是:"<<endl;
tect3.calculate();
}
写好了,希望符合你的要求
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友96aa8d3
2010-12-28 · TA获得超过433个赞
知道小有建树答主
回答量:2306
采纳率:75%
帮助的人:952万
展开全部
貌似要花些时间写 很急吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式