编写一个程序,声明抽象基类 Shape,由它派生出3 个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数 printArea 分别输出以上三者的面积,3个图形的数据在定义对象时给定。
时间: 2024-06-13 10:07:23 浏览: 193
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
好的,以下是实现该程序的代码:
```c++
#include <iostream>
using namespace std;
// 抽象基类 Shape
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数
};
// 派生类 Circle
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
};
// 派生类 Rectangle
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() {
return width * height;
}
};
// 派生类 Triangle
class Triangle : public Shape {
private:
double base, height;
public:
Triangle(double b, double h) : base(b), height(h) {}
double getArea() {
return 0.5 * base * height;
}
};
// 输出面积的函数
void printArea(Shape& shape) {
cout << "面积为:" << shape.getArea() << endl;
}
int main() {
Circle c(5);
Rectangle r(4, 6);
Triangle t(3, 8);
printArea(c);
printArea(r);
printArea(t);
return 0;
}
```
在这个程序中,我们定义了一个抽象基类 `Shape`,其中包含一个纯虚函数 `getArea()`,表示获取该形状的面积。然后我们分别定义了三个派生类 `Circle`、`Rectangle` 和 `Triangle`,分别表示圆形、矩形和三角形。这三个派生类都重写了 `getArea()` 函数,以计算出自己的面积。
最后,我们定义了一个函数 `printArea()`,它接受一个 `Shape` 类型的参数,并输出该形状的面积。在 `main()` 函数中,我们分别创建了一个圆形、一个矩形和一个三角形,并分别调用了 `printArea()` 函数来输出它们的面积。
阅读全文