编写一个C++程序:设计一个抽象类Shape,在此基础上派生出类Rectangle和类Circle,二者都具有计算对象面积的函数getArea()以及计算对象周长的函数getPerim()。
时间: 2024-03-09 11:47:33 浏览: 75
好的,以下是一个示例程序,演示如何使用C++来实现这个抽象类和派生类。
```cpp
#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 * radius * radius;
}
double getPerim() {
return 2 * M_PI * radius;
}
};
// 测试程序
int main() {
Rectangle r(4, 5);
cout << "矩形的面积为:" << r.getArea() << endl;
cout << "矩形的周长为:" << r.getPerim() << endl;
Circle c(3);
cout << "圆形的面积为:" << c.getArea() << endl;
cout << "圆形的周长为:" << c.getPerim() << endl;
return 0;
}
```
在这个程序中,我们首先定义了一个抽象类Shape,其中包含了getArea()和getPerim()两个纯虚函数。然后我们派生出了两个具体类Rectangle和Circle,这两个类分别代表矩形和圆形,它们都实现了getArea()和getPerim()方法。
接着,在测试程序中,我们分别创建了一个矩形对象r和一个圆形对象c,然后分别调用它们的getArea()和getPerim()方法来计算它们的面积和周长。最后,我们将计算结果输出到屏幕上。运行程序后,输出结果如下:
```
矩形的面积为:20
矩形的周长为:18
圆形的面积为:28.2743
圆形的周长为:18.8496
```
可以看到,我们成功地使用抽象类和派生类来计算了矩形和圆形的面积和周长。
阅读全文