返回一个已经存在的对象或者变量时最好返回一个引用(可以避免返回值做左值时的一些麻烦,以及不用生成匿名变量,可以节约资源,提高效率。),如:
Complex & operator++(Complex & c)
{
c .a ++;
c .b ++;
return c ;
}
返回一个临时变量时,那么不要返回引用(否则容易出现很多问题),如:
Complex operator++(Complex & c, int )
{
Complex tmp = c ;
c .a ++;
c .b ++;
return tmp ;
}