object1=object2=object3;
因为复制运算符具有右结合性,翻译成下面这条语句:
object1=(object2.operator=(object3));
此类情形中返回引用不是必须的。
考虑下面一种情形
(object1=object2)=object3;
该语句最终变为:
(object1.operator=(object2)).operator=object3;
从函数 operator=() 返回的对象被用来调用 operator=() 函数,如果返回的对象仅仅是 CMessage,则该语句是不合法的,
因为实际返回的是原始对象的临时副本,编译器不允许使用临时对象调用成员函数。
换句话说,返回类型是 CMessage 的情况下返回值不是左值。确保此类语句能够正常编译的唯一方法是返回可以作为左值的引用。
类的 const 成员函数意味着:
一,可以使用 const 对象调用该成员函数。
二,不能在函数定义内修改 this 成员变量,也就是不能修改调用该函数的 const 对象。