设计一个抽象类Shape,在此基础上派生出类Rectangle和类Circle,二者都具有计算对象面积的函数getArea()以及计算对象周长的函数getPerim()。
时间: 2024-03-11 16:48:06 浏览: 68
java创建一个Rectangle类,并输出矩形周长及面积
5星 · 资源好评率100%
好的,根据您的要求,我为您编写了以下代码:
```
#include <iostream>
using namespace std;
// 抽象类 Shape
class Shape {
public:
virtual float getArea() = 0; // 纯虚函数,用于计算面积
virtual float getPerim() = 0; // 纯虚函数,用于计算周长
};
// 类 Rectangle,继承自 Shape
class Rectangle : public Shape {
public:
Rectangle(float w, float h) : width(w), height(h) {} // 构造函数
float getArea() { return width * height; } // 重写 Shape 类的纯虚函数,计算面积
float getPerim() { return 2 * (width + height); } // 重写 Shape 类的纯虚函数,计算周长
private:
float width; // 宽度
float height; // 高度
};
// 类 Circle,继承自 Shape
class Circle : public Shape {
public:
Circle(float r) : radius(r) {} // 构造函数
float getArea() { return 3.14159 * radius * radius; } // 重写 Shape 类的纯虚函数,计算面积
float getPerim() { return 2 * 3.14159 * radius; } // 重写 Shape 类的纯虚函数,计算周长
private:
float radius; // 半径
};
int main() {
// 创建 Rectangle 对象并计算面积和周长
Rectangle rect(10, 5);
cout << "Rectangle Area: " << rect.getArea() << endl;
cout << "Rectangle Perimeter: " << rect.getPerim() << endl;
// 创建 Circle 对象并计算面积和周长
Circle cir(2.5);
cout << "Circle Area: " << cir.getArea() << endl;
cout << "Circle Perimeter: " << cir.getPerim() << endl;
return 0;
}
```
在上述代码中,我先定义了一个抽象类 Shape,其中包含两个纯虚函数 getArea() 和 getPerim(),分别用于计算面积和周长,因此 Shape 不能被实例化。
然后,我又定义了两个派生类 Rectangle 和 Circle,它们都继承自 Shape,分别实现了 getArea() 和 getPerim() 函数,以计算矩形和圆形的面积和周长。
最后,在 main() 函数中,我创建了 Rectangle 和 Circle 对象,并分别调用它们的 getArea() 和 getPerim() 函数计算面积和周长,并将结果输出到屏幕上。
希望这个代码对您有所帮助。
阅读全文