c++重载赋值操作符的返回值是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++重载赋值操作符的返回值是啥?相关的知识,希望对你有一定的参考价值。
classname classname::operate=(classname)
……
返回值是this还是*this?可以是别的吗?
另外,点号(比如classname.function())和解引用*哪个优先级更高?
通常返回的是引用,比如classname&,原因是重载的操作符要尽可能和内建操作符看上去一致。比如我们对int赋值时,
int i, j;i = j = 0
如果我们不返回引用,假设返回void,那么就不能连续赋值了。重载的目的之一是为了提供语法上的方便,并且在适当情况下要保持和内建操作的一致性,这样就不会违反直觉了。
返回引用的话,我们就必须返回对象而不是对象的指针,所以必须是*this,而this是指针。
点操作符的优先级比解引用的高。
参考技术A 1 classname classname::operate=(classname)........... 的返回值 就是 classname , 但是不是*this 这要看内部实现.比如:
1)classname classname::operate=(classname)return *this; //就是*this
2)classname classname::operate=(classname)
static classname data;
................................
return data; //就不是.
2 点的优先级高. 但拿不准,最好用括号标明. 参考技术B 我只知道解引用的优先级小于点好
以上是关于c++重载赋值操作符的返回值是啥?的主要内容,如果未能解决你的问题,请参考以下文章