c++ 定义一个抽象类CShape,包含纯虚函数 GetArea和纯虚函数SetData,然后派生出三角形CTriangle类、矩形

定义一个抽象类CShape,包含纯虚函数GetArea(用来计算面积)和纯虚函数SetData(键盘输入数据),然后派生出三角形CTriangle类、矩形CRect类、圆... 定义一个抽象类CShape,包含纯虚函数 GetArea(用来计算面积)和纯虚函数SetData(键盘输入数据),然后派生出三角形CTriangle类、矩形CRect类、圆CCircle类,要求:
1)分别求其面积,采用动态联编的方式输出面积信息;
2)重载>或<运算符,三类对象面积两两比较,求出面积最大者;
用c++编程
展开
 我来答
匿名用户
推荐于2017-09-02
展开全部
#include <iostream>
using namespace std;

class CShape{
public:
virtual double GetArea()const=0;
virtual void SetArea()=0;
};

class CTriangle:public CShape{
private:
double height;
double bottom;
public:
double GetArea()const{
return 0.5 * height * bottom;
}
void SetArea(){
cout<<"CTriangle.height:";cin>>this->height;
cout<<"CTriangle.bottom:";cin>>this->bottom;
}
bool operator>(const CShape& CBase){
//cout<<CBase.GetArea()<<endl;//
return this->GetArea() > CBase.GetArea();
}

};

class CRect:public CShape{
private:
double length;
double width;
public:
double GetArea()const{
return length * width;
}
void SetArea(){
cout<<"CRect.length:";cin>>this->length;
cout<<"CRect.width:";cin>>this->width;
}
bool operator>(const CShape& CBase){
//cout<<CBase.GetArea()<<endl;//
return this->GetArea() > CBase.GetArea();
}

};

class CCircle:public CShape{
private:
double radius;
public:
double GetArea()const{
return 3.141592654 * radius * radius;
}
void SetArea(){
cout<<"CCircle.radius:";cin>>this->radius;
}
bool operator>(const CShape& CBase){
//cout<<CBase.GetArea()<<endl;//
return this->GetArea() > CBase.GetArea();
}


};

int main(){
CTriangle ct;
ct.SetArea();
cout<<"CTriangle面积:"<<ct.GetArea()<<endl<<endl;

CRect cr;
cr.SetArea();
cout<<"CRect面积:"<<cr.GetArea()<<endl<<endl;

CCircle cc;
cc.SetArea();
cout<<"CCircle面积:"<<cc.GetArea()<<endl<<endl;

if(ct > cr && ct > cc)
cout<<"CTriangle面积最大!"<<endl;
else if(cr > ct && cr > cc)
cout<<"CRect面积最大!"<<endl;
else if(cc > ct && cc > cr)
cout<<"CCircle面积最大!"<<endl;
else
cout<<"最大值不唯一!"<<endl;

return 0;
}

 执行结果:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式