C++对象数组应用举例
时间: 2023-11-07 20:04:44 浏览: 57
一个常见的 C++ 对象数组的应用是存储一组相同类型的对象,并对它们进行统一的操作。下面以一个简单的图形类为例,来举例说明。
假设我们有一个 Shape 类,它有一个纯虚函数 area(),用于求形状的面积。我们可以派生出 Circle、Rectangle 和 Triangle 类,分别表示圆形、矩形和三角形,它们分别实现了 area() 函数。
现在我们要存储一组不同的形状,并计算它们的总面积。我们可以定义一个 Shape 类型的数组,将不同的形状对象存储在其中,然后依次调用每个对象的 area() 函数,即可求出总面积。
下面是示例代码:
```cpp
#include <iostream>
using namespace std;
class Shape {
public:
virtual double area() = 0; // 纯虚函数
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double area() { return 3.14 * radius * radius; }
private:
double radius;
};
class Rectangle : public Shape {
public:
Rectangle(double l, double w) : length(l), width(w) {}
double area() { return length * width; }
private:
double length, width;
};
class Triangle : public Shape {
public:
Triangle(double b, double h) : base(b), height(h) {}
double area() { return 0.5 * base * height; }
private:
double base, height;
};
int main() {
Shape *shapes[3]; // Shape 类型的数组,存储不同的形状对象
shapes[0] = new Circle(5);
shapes[1] = new Rectangle(3, 4);
shapes[2] = new Triangle(2, 6);
double totalArea = 0;
for (int i = 0; i < 3; i++) {
totalArea += shapes[i]->area(); // 依次调用每个对象的 area() 函数
}
cout << "Total area: " << totalArea << endl;
for (int i = 0; i < 3; i++) {
delete shapes[i]; // 释放对象内存
}
return 0;
}
```
运行结果:
```
Total area: 39.14
```