我们之前了解过函数的重载(详见C++函数(二))。它使得同名的函数可以接受不同的参数,实现不同的功能。而运算符重载和函数的重载很相似。也就是说,同样是运算符“+”,在不同的地方使用具有不同的功能。
还是举个例子来说:
(1) 如果操作数是两个数
int a = 1, b = 2; cout << a+b << endl;
此时“+”的作用是将两个数相加起来。
(2) 如果操作数是两个字符串
string a = "I like "; string b = "C++! "; cout << a+b << endl;
此时“+”的作用是将两个字符串拼接起来。
如我们在上面看到的,“+”在不同的场景下实现了不同的功能,这就是运算符重载。
其实,使用一个运算符就是调用一个函数。比如“+”就相当于函数“operator+()”看下面的代码
#include <iostream> using namespace std; int main() { string a = "I like ", b = "C++! "; cout << a + b << endl; cout << "----------------" << endl; cout << operator+(a, b) << endl; return 0; }
运行结果:
可以看到,a+b与operator+(a, b)运行的结果是一样的。
因为“+”相比“operator+()”使用简单很多,所以我们平时只使用运算符“+”。
像“operator+()”这样的函数,我们叫做运算符函数。
那么运算符重载就好理解了,它本质上就是函数的重载。