编程实现循环计算面积;不同的选择实现不同形状面积的计算;要求:基于面向对象思想,用到方法的重载
时间: 2024-05-01 14:16:35 浏览: 106
以下是一个基于面向对象思想的示例代码,实现了循环计算不同形状的面积。
```
// 定义一个 Shape 类,作为所有形状的基类
class Shape {
public:
// 定义一个虚函数,用于计算面积
virtual double calculateArea() = 0;
};
// 定义一个 Circle 类,继承自 Shape 类
class Circle : public Shape {
public:
// 构造函数,传入圆的半径
Circle(double radius) : radius_(radius) {}
// 实现 Shape 类的虚函数,计算圆的面积
virtual double calculateArea() {
return 3.1415926 * radius_ * radius_;
}
private:
double radius_;
};
// 定义一个 Rectangle 类,继承自 Shape 类
class Rectangle : public Shape {
public:
// 构造函数,传入矩形的长和宽
Rectangle(double length, double width) : length_(length), width_(width) {}
// 实现 Shape 类的虚函数,计算矩形的面积
virtual double calculateArea() {
return length_ * width_;
}
private:
double length_;
double width_;
};
// 定义一个 Triangle 类,继承自 Shape 类
class Triangle : public Shape {
public:
// 构造函数,传入三角形的底和高
Triangle(double base, double height) : base_(base), height_(height) {}
// 实现 Shape 类的虚函数,计算三角形的面积
virtual double calculateArea() {
return 0.5 * base_ * height_;
}
private:
double base_;
double height_;
};
int main() {
// 创建一个 Shape 类型的指针数组,用于存储不同形状的对象
Shape* shapes[3];
// 创建不同形状的对象,并将指针存储到数组中
Circle circle(1.0);
Rectangle rectangle(2.0, 3.0);
Triangle triangle(4.0, 5.0);
shapes[0] = &circle;
shapes[1] = &rectangle;
shapes[2] = ▵
// 循环计算每个形状的面积,并输出结果
for (int i = 0; i < 3; i++) {
double area = shapes[i]->calculateArea();
std::cout << "Shape " << i+1 << " area: " << area << std::endl;
}
return 0;
}
```
在上述代码中,我们定义了一个 Shape 类作为所有形状的基类,并在其中定义了一个虚函数 calculateArea(),用于计算面积。然后,我们分别定义了 Circle、Rectangle 和 Triangle 类,分别继承自 Shape 类,并实现了 calculateArea() 函数,用于计算圆、矩形和三角形的面积。
在主函数中,我们创建了一个 Shape 类型的指针数组,用于存储不同形状的对象。然后,我们创建了不同形状的对象,并将指针存储到数组中。最后,我们循环计算每个形状的面积,并输出结果。
这种方式可以很方便地实现不同形状面积的计算,并且可以很容易地扩展到其他形状。同时,我们还可以使用方法的重载来支持不同参数类型的形状面积计算。例如,我们可以为 Rectangle 类增加一个重载的 calculateArea() 函数,用于计算正方形的面积。
阅读全文