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

来源:互联网 发布:国外大学网络课程证书 编辑:程序博客网 时间:2024/05/28 15:43

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

a=b=c的情况出现,这个时候如果不返回值,则操作符就没有操作数可处理了,显然要返回值。那么为什么要返回引用呢,这个就是为了与内置类型的赋值操作符,操作方式一致,因为当 int a=b的时候,b是b的本省,那么对于类对象a=b=c的过程中,先进行b=c操作,则这里返回b的引用,实际就是b换了个别名,这样就遵循了内置类型。同样的,对于*(解引用),[ ](下标操作符)都是要返回引用。这里并不是理解中的为了提高效率,更多的是符合内置类型的方式。对于有些没有复制构造函数的类型,不得已不得不返回引用。这里特别强调的是当对类对象重载输入输出操作符的时候,os<< a << b ,除了其没有复制构造函数外,还因为其返回引用了就支持这种连续的类型了。

0 0
原创粉丝点击