重载赋值运算符返回reference to *this(Effective C++_10)
来源:互联网 发布:知乎 苏德战争 编辑:程序博客网 时间:2024/06/05 17:59
考虑下面的代码:
int x, y, z;x = y = z = 15;
赋值工作是自右向左结合的,所以上面的赋值链可以解析成这样:
x = (y = (z = 15));
为了实现这种“连锁赋值”,赋值操作符必须返回一个指向操作符左边的实参的引用;当你为你的类实现赋值运算符时,你应该遵循这一惯例:
class Widget {public: ...Widget& operator=(const Widget& rhs) // 返回值类型是一个引用,{ // 该引用指向当前类 ... return *this; // 返回至运算符左边的对象 } ...};
这一惯例不仅适用于以上标准,也适用于所有赋值运算符:
class Widget {public: ... Widget& operator+=(const Widget& rhs) // 这一惯例对于 += 、 -= 、 *= { // 等运算符均使用 ... return *this; } Widget& operator=(int rhs) // 此函数也适用 { // ... return *this; } ...};
注意:这仅仅是一个惯例,无强制性,不遵循这一惯例的也能编译。然而这份协议被所有内置类型或标准库提供的类型,如string 、 vector 、 complex 、 tr1::shared_ptr 或即将提供的类型(见54)所遵守。所以,一般来说,还是遵守该协议较好。
牢记:让赋值运算符返回一个指 向 *this 的引用
参考:Effective C++ 3rd(侯捷译)
0 0
- 重载赋值运算符返回reference to *this(Effective C++_10)
- Effective C++之Item 10: 让assigment operator(赋值运算符)返回一个reference to *this
- [翻译] Effective C++, 3rd Edition, Item 10: 让 assignment operators(赋值运算符)返回一个 reference to *this(引向 *this 的引用)
- Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
- 【effective c++】条款10:令operator=返回一个reference to *this
- 《Effective C++》学习笔记条款10 令operator= 返回一个reference to *this
- Effective C++——》条款10:令operator=返回一个reference to *this
- Effective C++:条款10:令operator=返回一个reference to *this。
- 读书笔记《Effective C++》条款10:令operator=返回一个reference to *this
- C++之令operator=返回一个reference to *this(10)---《Effective C++》
- effective c++ 令operator=返回一个reference to *this
- Effective C++ 第10条:让赋值运算符返回一个指向*this的引用
- C++:赋值运算符重载
- 重载赋值运算符(c/c++)
- 重载赋值运算符(c++)
- Effective C++ 学记之10 令operator=返回一个 reference to *this
- Effective C++ Item 10 令operator= 返回一个reference to *this
- Effective C++读书笔记之十:令operator=返回一个reference to *this
- HTML5 webSQL动态查询应用截图
- 解析数据封装对象的时候出现重名问题
- Go语言并发编程(二)
- [leetcode] 14.Longest Common Prefix
- 1065. A+B and C (64bit) (20)
- 重载赋值运算符返回reference to *this(Effective C++_10)
- Hadoop入门进阶课程5--MapReduce原理及操作
- Android4.0 Launcher拖拽原理分析(一)
- sqlite字段类型
- Android Studio错误1
- php获取当前页地址
- thinkphp前台格式化输出日期
- JSON用法简介
- Linux VIM自动提示插件安装配置