定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。然后派生出三角形类Triangle类、矩形Rect类、圆Circle类,分别求其面积。最后定义一个Total_Area类,计算这几个形状的面积之和,各形状的数据通过Total_Area类的构造函数或成员函数来设置。编写一个完整的程序。


#include <iostream>


using namespace std;


class shape
{
public:
    virtual double Area()=0;
    virtual void Setshape()=0;
};




class Triangle:public shape
{
private :
    float floor,high;
public:
    Triangle();
    ~Triangle();
    virtual double Area();
    virtual void Setshape();
};




Triangle::Triangle()
{
}
Triangle::~Triangle()
{
    cout<<"Triangle_clear"<<endl;
}
double Triangle::Area()
{
    return floor*high/2;
}
void Triangle::Setshape()
{
    cout<<"输入三角形长与宽"<<endl;
    cin>>floor;
    cin>>high;
}




class Rect:public shape
{
private:
    double len,width;
public:
    Rect();
    Rect(int len,int width);
    ~Rect();
    virtual double Area();
    virtual void Setshape();
};




Rect::Rect()
{
}
Rect::Rect(int l,int w)
{
    this->len=l;
    this->width=w;
}
Rect::~Rect()
{
    cout<<"RECT_clear"<<endl;
}
double Rect::Area()
{
    return len*width;
}
void Rect::Setshape()
{
    cout<<"输入矩阵的才长和宽"<<endl;
    cin>>len;
    cin>>width;
}




class Circle:public shape
{
private :
    double r;
public :
    Circle();
    Circle(int r);
    ~Circle();
    virtual double Area();
    virtual void Setshape();
};


Circle::Circle()
{
}
Circle::Circle(int R)
{
    this->r=R;
}
Circle::~Circle()
{
    cout<<"Circle_clear"<<endl;
}
double Circle::Area()
{
    return 3.1415*r*r;
}
void Circle::Setshape()
{
    cout<<"输入圆的半径"<<endl;
    cin>>r;
}


class Total_Area:public Triangle,public Rect,public Circle
{
public:
    Total_Area();
    ~Total_Area();
    double allArea(shape *a,shape *b,shape *c);
};
Total_Area::Total_Area()
{
}
Total_Area::~Total_Area()
{
    cout<<"all_Area_Clear"<<endl;


}
double Total_Area::allArea(shape *a,shape *b,shape *c)
{
    double area;
    area=a->Area()+b->Area()+c->Area();
    return area;
}


int main()
{
    Triangle triangle;
    triangle.Setshape();
    cout<<"triangle area: "<<triangle.Area()<<endl;


    Rect rect;
    rect.Setshape();
    cout<<"rect area: "<<rect.Area()<<endl;


    Circle circle;
    circle.Setshape();
    cout<<"circle area: "<<circle.Area()<<endl;


    Total_Area allArea;
    cout<<"总面积是: "<<allArea.allArea(&triangle,&rect,&circle)<<endl;
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐