6-2 无规矩不成方圆

image.png

请结合如图所示的继承关系设计Shape、Circle以及Rectangle类,使得下述代码可以正确计算并输出矩形和圆的面积。

提示:Shape的析构以及area()函数都应为虚函数。

#include<bits/stdc++.h>
using namespace std;

class Shape{
public:
Shape(){}
~Shape(){}
vritual float area()=0;
};
class Circle:public Shape{
public:
Cricle(int a,int b,float c):x(a),y(b),radius(c){}
~Cricle(){}
float area()
{
return radius*radius*3.141592654;
}
private:
int x;
int y;
float radius;
};
class Rectangle :public Shape{
public:
Rectangle(int a,int b)
{
width=a;
height=b;
}
~Rectangle(){}
float area()
{
return width*height;
}
private:
int width;
int height;
};
int main()
{
Shape* shapes[];
int w,h;
cin>>w>>h;//输入矩形的长宽
shapes[0]=new Rectangle(w,h);
float r;//输入圆的半径
cin>>r;
shapes[1]=new Circle(0,0,2);//圆心在(0,0)半径为r的圆
printf("Area of rectangle:%.2f\n",shapes[0]->area());
printf("Area of circle:%.2f\n",shapes[1]->area());
for (auto i=0;i<2;i++)
delete shapes[i];
return 0;
}

posted @ 2023-05-23 22:29  chrisrmas、  阅读(249)  评论(0编辑  收藏  举报