C++编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
时间: 2023-12-06 16:45:01 浏览: 101
c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)
以下是实现该程序的C++代码:
```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.14159 * radius * radius;
}
};
// 派生类 Rectangle(矩形)
class Rectangle : public Shape {
private:
double length; // 长
double width; // 宽
public:
// 构造函数,初始化长和宽
Rectangle(double l, double w) {
length = l;
width = w;
}
// 重写纯虚函数
double getArea() {
return length * width;
}
};
// 派生类 Triangle(三角形)
class Triangle : public Shape {
private:
double base; // 底边长
double 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 对象
Circle circle(5.0);
printArea(circle);
// 创建 Rectangle 对象
Rectangle rectangle(4.0, 6.0);
printArea(rectangle);
// 创建 Triangle 对象
Triangle triangle(3.0, 4.0);
printArea(triangle);
return 0;
}
```
运行结果如下:
```
该图形的面积为:78.5398
该图形的面积为:24
该图形的面积为:6
```
阅读全文