12.2 语法
定义重载的运算符就像定义函数,只是该函数的名字是operator@,这里@代表了被重载的运算符。函数参数表中参数的个数取决于两个因素:
1)运算符是一元的(一个参数)还是二元的(两个参数)。
2)运算符被定义为全局函数(对于一元是一个参数,对于二元是两个参数)还是成员函数(对于一元没有参数,对于二元是一个参数—此时该类的对象用做左侧参数)。下面的简单类说明了运算符重载的语法:
这两个重载的运算符被定义为内联成员函数,在它们被调用时会显示信息。对于二元运算符,惟一的参数是出现在运算符右侧的那个操作数。当一元运算符被定义为成员函数时,是没有参数的。所调用的成员函数属于运算符左侧的那个对象。
对于非条件运算符(条件运算符通常返回一个布尔值),如果两个参数是相同的类型,总是希望返回相同类型的对象或引用吧(如果它们不是相同类型,结果就取决于程序设计者了)。用这种方法可以构造复杂的表达式:
operator+产生一个新的Integer(临时的),它用做operator+=的rv(右)参数。一旦这个临时变量不再需要就会销毁。