image.png 请结合如图所示的继承关系设计Shape、Circle以及Rectangle类,使得下述代码可以正确计算并输出矩形和圆的面积。 提示:Shape的析构以及area()函数都应为虚函数。
时间: 2023-06-06 20:05:29 浏览: 120
好的,这是一个关于面向对象设计的问题。根据如图所示的继承关系,可以设计如下的类:
```
class Shape {
public:
virtual ~Shape() {}
virtual double area() const = 0;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
virtual double area() const {
return 3.14 * radius * radius;
}
private:
double radius;
};
class Rectangle : public Shape {
public:
Rectangle(double w, double h) : width(w), height(h) {}
virtual double area() const {
return width * height;
}
private:
double width, height;
};
```
然后可以使用如下代码进行测试:
```
Shape* s1 = new Circle(2.0);
Shape* s2 = new Rectangle(4.0, 6.0);
std::cout << "Area of circle: " << s1->area() << std::endl;
std::cout << "Area of rectangle: " << s2->area() << std::endl;
delete s1;
delete s2;
```
输出结果应该为:
```
Area of circle: 12.56
Area of rectangle: 24
```
希望能够帮助您解决问题。