定义 一个抽象类Shape,由它派生3个 类:Square(正方形)、 Trapezoid (梯形) 和Triangle: 角形。用虛函数分别计算几种图形面积、并求它们的和
时间: 2024-03-09 07:46:52 浏览: 104
好的,我可以帮您解答这个问题。
首先,我们可以在 C++ 中定义一个抽象类 `Shape`,然后在该类中定义一个纯虚函数 `getArea()`,用于计算各种形状的面积。代码如下:
```c++
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数
};
```
接下来,我们可以派生出几个类来表示不同的形状,例如:
```c++
class Square : public Shape {
public:
Square(double s) : side(s) {}
double getArea() { return side * side; }
private:
double side;
};
class Trapezoid : public Shape {
public:
Trapezoid(double a, double b, double h) : top(a), bottom(b), height(h) {}
double getArea() { return (top + bottom) * height / 2; }
private:
double top, bottom, height;
};
class Triangle : public Shape {
public:
Triangle(double b, double h) : base(b), height(h) {}
double getArea() { return 0.5 * base * height; }
private:
double base, height;
};
```
最后,我们可以计算各种形状的面积总和。例如,假设我们有一个包含不同形状的指针数组 `shapes`,可以这样计算它们的面积总和:
```c++
double totalArea = 0;
Square square(2.0);
Trapezoid trapezoid(2.0, 4.0, 3.0);
Triangle triangle(2.0, 3.0);
Shape *shapes[] = { &square, &trapezoid, &triangle };
int numShapes = 3;
for (int i = 0; i < numShapes; i++) {
totalArea += shapes[i]->getArea();
}
```
其中 `numShapes` 是数组中形状的数量。
希望这可以帮助您解决问题。如果您有任何疑问,请随时问我。
阅读全文