编写一个能够实现计算不同图形(圆形和矩形)面积的C++程序。要求使用函数重载Area来实现这一功能,即创建两个不同的函数,它们具有相同的名称但参数不同,以适应不同图形的计算需求。并在main函数中调用你编写的重载函数计算不同图形(圆形和矩形)的面积。
时间: 2024-09-13 15:12:20 浏览: 23
当你需要编写一个C++程序来计算不同形状(如圆形和矩形)的面积,你可以使用函数重载(Function Overloading)。这是一个允许你在同一作用域内定义多个同名函数,但是它们的参数列表不同,以此达到区分的目的的技术。
首先,我们定义一个基础类Shape,然后分别派生出Circle和Rectangle类,并为每个类提供各自的Area()函数实现。这里是简单的示例:
```cpp
#include <iostream>
#include <cmath>
// 基础类Shape
class Shape {
public:
virtual double area() const = 0; // 纯虚函数,用于声明方法,不提供实现
};
// 圆形类Circle,继承自Shape
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() const override { return M_PI * pow(radius, 2); }
};
// 矩形类Rectangle,继承自Shape
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() const override { return width * height; }
};
// 函数重载 - 计算不同形状的面积
double Area(Shape& shape) { return shape.area(); }
int main() {
Circle circle(5);
Rectangle rectangle(4, 6);
std::cout << "Circle area: " << Area(circle) << std::endl;
std::cout << "Rectangle area: " << Area(rectangle) << std::endl;
return 0;
}
```
在这个例子中,`Area()`函数接受一个Shape类型的引用作为参数,根据传入的实际对象类型(Circle或Rectangle),调用对应的area()方法计算并返回面积。