weixin_71426357 2022-06-15 16:40 采纳率: 100%
浏览 67
已结题

c++,抽象类,派生类

要求:
(1)已知Figure类为抽象类,包含两个protected的double类型变量 x与y;
(2)Square类与Circle类均从Figure类公有派生;
(3)计算中要用到π,取值3.14。
请根据运行结果与main函数将程序补充完整。

例1(只有第1行为输入):
2.2 3.3
weight:2.2,height:3.3
area=7.26
radius:2.2
area=15.1976

请注意,main()函数(或函数调用)必须按如下所示编写:
int main()
{
Figure *p;
double a,b;
cin>>a>>b;
Square s(a,b);
Circle c(a);
p=&s;
p->area(); //输出矩形的长、宽,计算面积并输出
p=&c;
p->area(); //输出圆的半径,计算面积并输出

return 0;

}

  • 写回答

2条回答 默认 最新

  • 惜日短 2022-06-15 17:03
    关注
    
    #include<iostream>
    using namespace std;
    
    #define PI 3.14
    class Figure
    {
    public:
        virtual void area()
        {
    
        }
    protected:
        double x;
        double y;
    } ;
    class Square:public Figure
    {
    public:
        Square(double _x,double _y)
        {
            x=_x;
            y=_y;
        }
        void area()
        {
            cout<<"weight:"<<x<<",height:"<<y<<endl;
            cout<<"area="<<x*y<<endl;
        }
    };
    
    class Circle:public Figure
    {
    public:
        Circle(double _x)
        {
            x=_x;
        }
        void area()
        {
            cout<<"weight:"<<x<<endl;
            cout<<"area="<<x*x*PI<<endl;
        }
    };
    int main()
    {
        Figure *p;
        double a,b;
        cin>>a>>b;
        Square s(a,b);
        Circle c(a);
        p=&s;
        p->area(); //输出矩形的长、宽,计算面积并输出
        p=&c;
        p->area(); //输出圆的半径,计算面积并输出
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 创建了问题 6月15日