3人对饮

导航

 

object1=object2=object3;

因为复制运算符具有右结合性,翻译成下面这条语句:

object1=(object2.operator=(object3));

此类情形中返回引用不是必须的。

考虑下面一种情形

(object1=object2)=object3;

该语句最终变为:

(object1.operator=(object2)).operator=object3;

从函数 operator=() 返回的对象被用来调用 operator=() 函数,如果返回的对象仅仅是 CMessage,则该语句是不合法的,

因为实际返回的是原始对象的临时副本,编译器不允许使用临时对象调用成员函数。

换句话说,返回类型是 CMessage 的情况下返回值不是左值。确保此类语句能够正常编译的唯一方法是返回可以作为左值的引用。

类的 const 成员函数意味着:

一,可以使用 const 对象调用该成员函数。

二,不能在函数定义内修改 this 成员变量,也就是不能修改调用该函数的 const 对象。

 

posted on 2012-09-10 11:18  3人对饮  阅读(169)  评论(0编辑  收藏  举报