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

c++的某些操作符为什么要返回引用?为什么经常有书中说对于一些操作符我们要尊重内置类的操作符,所以要返回引用

2014-12-18 14:54 411 查看
这个问题一直困扰着我,因为重载赋值操作符的时候,左操作数的所有成员都已经被右操作数相应的成员赋值了,那我们为什么要返回*this的引用呢,这是因为在c++中允许存在

a=b=c的情况出现,这个时候如果不返回值,则操作符就没有操作数可处理了,显然要返回值。那么为什么要返回引用呢,这个就是为了与内置类型的赋值操作符,操作方式一致,因为当 int a=b的时候,b是b的本省,那么对于类对象a=b=c的过程中,先进行b=c操作,则这里返回b的引用,实际就是b换了个别名,这样就遵循了内置类型。同样的,对于*(解引用),[ ](下标操作符)都是要返回引用。这里并不是理解中的为了提高效率,更多的是符合内置类型的方式。对于有些没有复制构造函数的类型,不得已不得不返回引用。这里特别强调的是当对类对象重载输入输出操作符的时候,os<<
a << b ,除了其没有复制构造函数外,还因为其返回引用了就支持这种连续的类型了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐