Item 10:赋值运算符要返回自己的引用 Effective C++笔记
来源:互联网 发布:魔灵召唤淘宝刷塔 编辑:程序博客网 时间:2024/06/12 22:32
Item 10:Have assignment operators return a reference to *this.
这是关于赋值运算符的编程惯例,用来支持链式的赋值语句:
int x, y, z;...x = y = z = 1;
在C++中,它相当于:
x = ( y = ( z = 1 ) );
这是因为=
运算符是右结合的,链式赋值时会从右向左运算。链式写法的赋值已经成为了惯例, 所以我们自定义的对象最好也能支持链式的赋值,这需要重载=
运算符时返回当前对象的引用:
class Widget {public: Widget& operator=(const Widget& rhs){ // return type is a reference to return *this; // return the left-hand object } Widget& operator+=(const Widget& rhs){ // the convention applies to return *this; // +=, -=, *=, etc. }};
说到运算符的结合性,不妨来研究一下最费解的运算符,
的行为。首先,它的返回值是后面表达式的值:
int a;a = (1, 2, 3);cout<<a<<endl;
上述代码的输出结果是3
。如果你写成了a = 1, 2, 3
,输出结果将会是1
。 因为=
运算符的优先级高于,
,此时第一个表达式变成了a = 1
,第二个是b
,第三个是c
。 那么结合性呢?,
运算符是左结合的:
cout<<1, cout<<2, cout<<3;
输出是:
123
除非注明,本博客文章均为原创,转载请以链接形式标明本文地址: http://harttle.com/2015/07/28/effective-cpp-10.html
0 0
- Item 10:赋值运算符要返回自己的引用 Effective C++笔记
- [翻译] Effective C++, 3rd Edition, Item 10: 让 assignment operators(赋值运算符)返回一个 reference to *this(引向 *this 的引用)
- Effective C++ 第10条:让赋值运算符返回一个指向*this的引用
- Item 11:赋值运算符的自赋值问题 Effective C++笔记
- Effective C++之Item 10: 让assigment operator(赋值运算符)返回一个reference to *this
- Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
- 为什么赋值运算符要返回引用?
- 为什么赋值运算符要返回引用?
- 《Effective C#》Item 22:避免返回类内部成员的引用
- 让赋值运算符返回一个指向 *this 的 引用
- c++赋值运算符为什么要返回引用?
- C++赋值运算符重载,为什么要返回引用?
- 赋值运算符重载为什么要返回引用
- /c++赋值运算符为什么要返回引用
- Item 10:令赋值操作符返回一个this指针【effective C++读书笔记】
- 重载赋值运算符返回reference to *this(Effective C++_10)
- 第10条: 让赋值运算符返回一个指向 *this 的引用
- Item 21:需要返回对象时,不要返回引用 Effective C++笔记
- left join
- 关于端口占用问题,利用tomcat发布工程,有时会出现由于端口被占用而发布不成功,就需要终止端口
- poj 3648 wedding(2-sat 拓扑排序输出方案)
- css知多少(4)——解读浏览器默认样式
- Android App启动出现预加载界面
- Item 10:赋值运算符要返回自己的引用 Effective C++笔记
- Web.xml配置context-param
- mongodb导入导出及备份还原
- 用管理员身份打开cmd
- 任意宽度灰度BMP图像读写 V1
- 调用startActivityForResult,onActivityResult无响应的问题
- 最最简单的客户端与服务端的连接
- js知识框架
- HDU-2189 悼念512汶川大地震遇难同胞――来生一起走