编写一个c++程序,声明抽象基类 Shape,由它派生出3 个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数 printArea 分别输出以上三者的面积,3个图形的数据在定义对象时给定。
时间: 2024-06-13 19:07:24 浏览: 163
好的,以下是实现该程序的代码:
```
#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 函数中,我们分别创建了一个 Circle、Rectangle 和 Triangle 对象,并将它们作为参数传递给 printArea 函数,输出它们的面积。
阅读全文