代码改变世界

Effective C++ 学习笔记(12)

2011-08-03 16:03  Daniel Zheng  阅读(193)  评论(0编辑  收藏  举报

让operator=返回*this的引用


要完成如 a = b =c 这样的操作所以返回值不能为void,对这个表达式,编译器的理解为 a = (b = c),所以operator=可以返回左值或者右值,但有时候我们也需要这样的操作 (a = b) = c ,b赋值给a,然后c赋值给a。所以operator=应该返回右值。、

由此分析,我们得到operator=的函数声明为 T & T::operator=(const T &)。

假设我们传入的参数为a,则a为const T & 类型,与返回类型不符,所以不能作为返回值。

如果我们去掉参数的const,首先,这样不安全,函数内部可能改变传入的参数,其次对于一些字符串字面量,其实质仍为const。

所以我们只能返回*this的引用。