记住:重载的运算符是一个函数,他只是一个普通的函数,只是他的函数名称比较特别,比如
A operator +(A m) {...}假设A是一个类,那么这个重载的加操作符,其函数名称就是operator +,函数的反回类型是A,参数是A m。
因此C++运算符重载反回的是什么,要根据反回类型来决定的,不是都一味的反回returen *this就行的,但一般的操作符重载函数都是以const A& operator +(A & m)的形式开始的,基本上都要求反回对自身的引用,注意是对自身类的引用,不一定要*this,也可以是new A()之类的类A的对象,之所以要使用*那是因为this是一个指针,与反回类型A&是不兼容的,因此要解引用。
class A {....};
A a, b, c;
a = b = c;
上面最后一行代码展开相当于a.=(b.=(c))
试想如果b不返回自己,a就无法被赋值,甚至连编译都通不过。
返回的是对象的引用而不是对象的指针。