c++用重载函数求圆、矩形、三角形、梯形的面积
时间: 2024-09-23 09:01:35 浏览: 66
在 C++ 中,你可以通过函数重载(Function Overloading)来编写一个模板函数或一组具有相同名称但参数列表不同的函数,用于计算不同形状如圆形(Circle)、矩形(Rectangle)、三角形(Triangle)和梯形(Trapezoid)的面积。下面是一个简单的示例:
```cpp
#include <iostream>
// 函数模板来计算各种形状的面积
template <typename T>
T calculateArea(T a, T b = 0) {
static_assert(std::is_arithmetic<T>::value, "输入类型必须是数值型");
return (b == 0) ? a * a : a * b; // 对于圆形和正方形,假设a就是半径或边长
}
// 特殊化模板来处理特定形状
double calculateCircleArea(double radius) {
return M_PI * radius * radius;
}
double calculateRectangleArea(double length, double width) {
return length * width;
}
double calculateTriangleArea(double base, double height) {
return 0.5 * base * height;
}
double calculateTrapezoidArea(double base1, double base2, double height) {
return 0.5 * (base1 + base2) * height;
}
int main() {
std::cout << "Circle area: " << calculateCircleArea(5) << std::endl;
std::cout << "Rectangle area: " << calculateRectangleArea(4, 6) << std::endl;
std::cout << "Triangle area: " << calculateTriangleArea(3, 4) << std::endl;
std::cout << "Trapezoid area: " << calculateTrapezoidArea(3, 7, 5) << std::endl;
return 0;
}
```
在这个例子中,`calculateArea`函数模板接受任意类型的参数,并根据传入参数的类型自动调用对应形状的特殊化函数。
阅读全文