写一个程序,定义抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、 Triangle(三角形),用c++写一个函数求printArea分别输出以上三者的面积,3个图形的数据在定义对象 时给定
时间: 2024-03-24 18:37:02 浏览: 86
好的,以下是程序的实现:
```c++
#include <iostream>
using namespace std;
class Shape { // 定义抽象基类Shape
public:
virtual double area() = 0; // 纯虚函数
};
class Circle : public Shape { // 派生出Circle类
public:
Circle(double r) : r(r) {}
double area() {
return 3.14 * r * r;
}
private:
double r;
};
class Rectangle : public Shape { // 派生出Rectangle类
public:
Rectangle(double l, double w) : l(l), w(w) {}
double area() {
return l * w;
}
private:
double l, w;
};
class Triangle : public Shape { // 派生出Triangle类
public:
Triangle(double b, double h) : b(b), h(h) {}
double area() {
return 0.5 * b * h;
}
private:
double b, h;
};
void printArea(Shape& shape) { // 定义函数printArea
cout << "面积为:" << shape.area() << endl;
}
int main() {
Circle c(5);
Rectangle r(4, 6);
Triangle t(3, 4);
printArea(c); // 输出圆形的面积
printArea(r); // 输出矩形的面积
printArea(t); // 输出三角形的面积
return 0;
}
```
输出结果为:
```
面积为:78.5
面积为:24
面积为:6
```
阅读全文