知识背景:
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。
例如:Box operator+(const Box&);
Box 是返回类型;
operator 是关键字,和“+”构成函数名;;
(const Box&) 是参数列表;
使用方式如:c3 = c1.operator+(c2);
当执行c3 = c1 + c2;
语句时,编译器检测到+
号左边(+
号具有左结合性,所以先检测左边)是一个 Box 对象,就会调用成员函数operator+()
,也就是转换为下面的形式:c3 = c1.operator+(c2);
这是运算符重载是作为成员函数的,也可以全局重载
运算符全局重载:
如:complex operator+(const complex &A, const complex &B)
使用例子:c3 = operator+(c1, c2);
当执行c3 = c1 + c2;
语句时,编译器检测到+
号两边都是 complex 对象,就会转换为类似这样的函数调用:c3 = operator+(c1, c2);