3、编写程序,计算圆形、三角形、正方形和长方形四种图形的面积 提示,定义抽象类shape,在其中说明一个纯虚函数area()作为接口。在派生类中定义具体的函数实现。
时间: 2024-02-24 09:56:07 浏览: 119
Java 算长方形、正方形、三角形的面积
5星 · 资源好评率100%
以下是一个使用抽象类和多态实现计算四种图形面积的示例程序:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double area() = 0;
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) {
radius = r;
}
double area() {
return 3.14 * radius * radius;
}
};
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double b, double h) {
base = b;
height = h;
}
double area() {
return 0.5 * base * height;
}
};
class Square : public Shape {
private:
double side;
public:
Square(double s) {
side = s;
}
double area() {
return side * side;
}
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) {
width = w;
height = h;
}
double area() {
return width * height;
}
};
int main() {
Shape* shapes[4];
shapes[0] = new Circle(5);
shapes[1] = new Triangle(7, 4);
shapes[2] = new Square(3);
shapes[3] = new Rectangle(6, 2);
for (int i = 0; i < 4; i++) {
cout << "Area of shape " << i+1 << ": " << shapes[i]->area() << endl;
}
return 0;
}
```
输出:
```
Area of shape 1: 78.5
Area of shape 2: 14
Area of shape 3: 9
Area of shape 4: 12
```
在这个示例中,我们定义了一个抽象类 `Shape`,其中包含一个纯虚函数 `area()`。接着,我们定义了四个派生类 `Circle`、`Triangle`、`Square` 和 `Rectangle`,每个类都必须实现 `Shape` 中的纯虚函数 `area()`。在 `main()` 函数中,我们创建了一个 `Shape` 类型的指针数组 `shapes`,并使用派生类对象初始化它的元素。然后,我们通过循环遍历指针数组,调用每个对象的 `area()` 函数,输出它们的面积值。由于 `Shape` 类型的指针可以指向它的任何派生类对象,所以我们可以通过多态性实现灵活的计算不同形状的面积。
阅读全文