使用C++编写一个基类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数getArea()、计算对象周长的函数getPerim()。
时间: 2024-02-21 08:58:11 浏览: 85
用C++程序求不同形状的面积
好的,这是一个简单的实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Shape {
public:
virtual double getArea() = 0;
virtual double getPerim() = 0;
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() {
return width * height;
}
double getPerim() {
return 2 * (width + height);
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() {
return M_PI * pow(radius, 2);
}
double getPerim() {
return 2 * M_PI * radius;
}
};
int main() {
Rectangle r(10, 20);
cout << "Rectangle area: " << r.getArea() << endl; // 输出 200
cout << "Rectangle perimeter: " << r.getPerim() << endl; // 输出 60
Circle c(5);
cout << "Circle area: " << c.getArea() << endl; // 输出 78.5398
cout << "Circle circumference: " << c.getPerim() << endl; // 输出 31.4159
return 0;
}
```
在这里,我们定义了一个基类 `Shape`,它包含了两个纯虚函数 `getArea()` 和 `getPerim()`,这两个函数的实现将在其子类中进行。我们还定义了两个派生类 `Rectangle` 和 `Circle`,它们重写了 `getArea()` 和 `getPerim()` 函数来计算矩形和圆的面积和周长。
在 `Rectangle` 类中,我们定义了 `width` 和 `height` 两个成员变量来表示矩形的宽度和高度,并在 `getArea()` 和 `getPerim()` 函数中分别计算矩形的面积和周长。
在 `Circle` 类中,我们定义了 `radius` 成员变量来表示圆的半径,并在 `getArea()` 和 `getPerim()` 函数中分别计算圆的面积和周长。
在 `main()` 函数中,我们创建了一个矩形对象 `r` 和一个圆对象 `c`,并分别调用它们的 `getArea()` 和 `getPerim()` 函数来计算它们的面积和周长。
阅读全文