首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

手上没资料,没VC, 问个重载运算符的有关问题

2012-02-15 
手上没资料,没VC, 问个重载运算符的问题在家呆了一段时间,感觉状态很差了,今天突然想起重载operator时返

手上没资料,没VC, 问个重载运算符的问题
在家呆了一段时间,   感觉状态很差了,   今天突然想起重载operator   =   时返回*this,   而这个*this是作为一个引用的。
class   Cls
{
  public:
            Cls&   operator   =   (const   Cls&   obj)
              {
                        ....
                        return   *this;
                }
              int   m_mem;
};
int   main()
{
              Cls   a,   b,   c;
              b.m_mem   =   10;
              c.m_mem   =   100;
              a   =   b   =   c;   //相当于   a   =   (b   =   c),   a得到的应该是b的引用。
              a.m_mem   =   1000;//如果a是b的引用了,   那么这里不是把b的m_mem成员给改变了吗?

}


[解决办法]
a = b = c; 相当于:
a.operator=(b.operator=(c))

你下面这个说法是错误的:
a = b = c; //相当于 a = (b = c), a得到的应该是b的引用。
错在不是 "a得到的应该是b的引用 "

真实的情况是:b.operator=(c)返回b的引用成了a.operator=(?)的参数.a.operator=(?)仍然返回自己.

热点排行