c plus plus 如何重载 +
时间: 2023-10-01 17:02:10 浏览: 96
C++中的重载是指在同一作用域内,可以定义多个同名函数或运算符,但它们的参数列表必须不同(类型和/或数量)。重载可以使程序更加灵活,使得同一函数名可以用于不同的数据类型或参数个数。
例如,可以定义一个名为add的函数,它可以接受两个整数、两个浮点数或两个字符串作为参数,并返回它们的和。
重载函数的语法如下:
```
return_type function_name (parameter_list1) { ... } //第一个函数
return_type function_name (parameter_list2) { ... } //第二个函数
```
其中,返回类型可以是任何有效的C++数据类型,函数名必须相同,但参数列表必须不同。
例如,以下是一个重载函数的示例:
```
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
float add(float a, float b) {
return a + b;
}
int main() {
cout << add(2, 3) << endl; //输出 5
cout << add(2.5, 3.5) << endl; //输出 6
return 0;
}
```
在上面的代码中,我们定义了两个名为add的函数,一个接受两个整数,另一个接受两个浮点数。在main函数中,我们分别调用这两个函数,并输出它们的返回值。
除了函数,运算符也可以被重载。例如,可以重载加号运算符(+),使得它可以用于不同的数据类型或对象。
以下是一个重载加号运算符的示例:
```
#include <iostream>
using namespace std;
class Complex {
public:
int real, imag;
Complex() { real = imag = 0; }
Complex(int r, int i) { real = r; imag = i; }
Complex operator+ (Complex const &obj) {
Complex res;
res.real = real + obj.real;
res.imag = imag + obj.imag;
return res;
}
};
int main() {
Complex c1(2, 3), c2(4, 5);
Complex c3 = c1 + c2;
cout << c3.real << " + i" << c3.imag << endl;
return 0;
}
```
在上面的代码中,我们定义了一个名为Complex的类,它表示一个复数。我们重载了加号运算符(+),使得它可以将两个复数相加,并返回一个新的复数对象。在main函数中,我们创建了两个复数对象c1和c2,并执行c1 + c2操作,并将结果存储在c3中。最后,我们输出c3的实部和虚部。
总之,重载是C++中非常有用的特性,它可以使程序更加灵活和易于使用。
阅读全文