c++用一个函数计算圆,正方形,长方形,三角形
时间: 2024-09-13 18:13:27 浏览: 52
在C++中,你可以使用函数重载(Function Overloading)的概念来计算不同几何形状的面积。函数重载允许你使用相同的函数名来定义多个函数,只要它们的参数列表不同即可。以下是一个简单的例子,展示了如何通过函数重载来计算圆、正方形、长方形和三角形的面积。
首先,定义各种形状的类,并在其中提供计算面积的方法:
```cpp
#include <cmath>
// 圆类
class Circle {
public:
Circle(double r) : radius(r) {}
double getArea() const { return M_PI * radius * radius; }
private:
double radius;
};
// 正方形类
class Square {
public:
Square(double side) : side(side) {}
double getArea() const { return side * side; }
private:
double side;
};
// 长方形类
class Rectangle {
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() const { return width * height; }
private:
double width, height;
};
// 三角形类,使用海伦公式计算面积
class Triangle {
public:
Triangle(double a, double b, double c) : sideA(a), sideB(b), sideC(c) {}
double getArea() const {
double s = (sideA + sideB + sideC) / 2;
return sqrt(s * (s - sideA) * (s - sideB) * (s - sideC));
}
private:
double sideA, sideB, sideC;
};
```
然后,你可以定义重载的函数来调用这些方法:
```cpp
// 计算圆的面积
double calculateArea(const Circle& circle) {
return circle.getArea();
}
// 计算正方形的面积
double calculateArea(const Square& square) {
return square.getArea();
}
// 计算长方形的面积
double calculateArea(const Rectangle& rectangle) {
return rectangle.getArea();
}
// 计算三角形的面积
double calculateArea(const Triangle& triangle) {
return triangle.getArea();
}
```
最后,你可以这样调用这些函数:
```cpp
Circle circle(5); // 半径为5的圆
Square square(4); // 边长为4的正方形
Rectangle rectangle(3, 4); // 长3,宽4的长方形
Triangle triangle(3, 4, 5); // 三边分别为3, 4, 5的三角形
std::cout << "圆的面积: " << calculateArea(circle) << std::endl;
std::cout << "正方形的面积: " << calculateArea(square) << std::endl;
std::cout << "长方形的面积: " << calculateArea(rectangle) << std::endl;
std::cout << "三角形的面积: " << calculateArea(triangle) << std::endl;
```
阅读全文