C++用三个函数构成函数重载,实现数值交换
时间: 2024-09-07 19:01:06 浏览: 64
在C++中,函数重载是指在同一作用域内可以声明几个功能类似的同名函数,但是这些函数的参数类型、个数或顺序至少有一个不同。利用函数重载,我们可以用相同的函数名来完成不同形式的数值交换操作。以下是三个不同形式的函数重载示例,用于实现数值交换:
1. 交换两个整型变量的值:
```cpp
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
```
2. 交换两个浮点型变量的值:
```cpp
void swap(float &a, float &b) {
float temp = a;
a = b;
b = temp;
}
```
3. 交换两个双精度浮点型变量的值:
```cpp
void swap(double &a, double &b) {
double temp = a;
a = b;
b = temp;
}
```
在这三个函数中,`swap`是函数名,而参数的类型分别为`int`, `float`, 和`double`,这样就构成了函数重载。当调用`swap`函数时,编译器会根据实参的类型决定调用哪个`swap`函数。
使用时,只需传入两个变量的引用即可:
```cpp
int x = 10, y = 20;
swap(x, y); // 调用第一个swap函数,交换两个整型变量的值
```
相关问题
c++三角函数运算符重载
C++中的三角函数运算符重载可以通过自定义一个类来实现。下面是一个示例代码,演示了如何重载sin()和cos()函数:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class MyMath {
public:
double angle;
MyMath(double a) {
angle = a;
}
double sin() {
return std::sin(angle);
}
double cos() {
return std::cos(angle);
}
};
int main() {
MyMath m(3.1415926/2);
cout << "sin(90) = " << m.sin() << endl; cout << "cos(90) = " << m.cos() << endl;
return 0;
}
```
在这个例中,我们定义了一个名为MyMath的类,它包含一个angle成员变量和两个成员函数sin()和cos()。在构造函数中,我们将角度值传递给angle成员变量。sin()和cos()函数使用标准库中的sin()和cos()函数来计算角度的正弦和余弦值。
在主函数中,我们创建了一个MyMath对象,并将90度的角度传递给它。然后我们调用sin()和cos()函数,并输出结果。
c++用重载函数求圆、矩形、三角形、梯形的面积
在 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`函数模板接受任意类型的参数,并根据传入参数的类型自动调用对应形状的特殊化函数。
阅读全文