您的位置:首页 > 编程语言 > C语言/C++

effective c++条款15学习总结

2011-02-14 09:24 204 查看
条款15: 让operator=返回*this的引用

operator=的返回值必须可以作为一个输入参数被函数自己接受。在一个类c中,缺省版本的operator=函数具有如下形式(见条款45):

c& c::operator=(const c&);

一般情况下几乎总要遵循operator=输入和返回的都是类对象的引用的原则,然而有时候需要重载operator=使它能够接受不同类型的参数。例如,标准string类型 提供了两个不同版本的赋值运算符:

string& // 将一个string

operator=(const string& rhs); // 赋给一个string

string& // 将一个char*

operator=(const char *rhs); // 赋给一个string

请注意,即使在重载时,返回类型也是类的对象的引用。

c++程序员经常犯的一个错误是让operator=返回void,这好象没什么不合理的,但它妨碍了连续(链式)赋值操作,所以不要这样做。

结论:当定义自己的赋值运算符时,必须返回赋值运算符左边参数的引用,*this。如果不这样做,就会导致不能连续赋值,或导致调用时的隐式类型转换不能进行,或两种情况同时发生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: