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 ,除了其没有复制构造函数外,还因为其返回引用了就支持这种连续的类型了。
a=b=c的情况出现,这个时候如果不返回值,则操作符就没有操作数可处理了,显然要返回值。那么为什么要返回引用呢,这个就是为了与内置类型的赋值操作符,操作方式一致,因为当 int a=b的时候,b是b的本省,那么对于类对象a=b=c的过程中,先进行b=c操作,则这里返回b的引用,实际就是b换了个别名,这样就遵循了内置类型。同样的,对于*(解引用),[ ](下标操作符)都是要返回引用。这里并不是理解中的为了提高效率,更多的是符合内置类型的方式。对于有些没有复制构造函数的类型,不得已不得不返回引用。这里特别强调的是当对类对象重载输入输出操作符的时候,os<<
a << b ,除了其没有复制构造函数外,还因为其返回引用了就支持这种连续的类型了。
相关文章推荐
- C++中赋值操作符为什么要返回引用类型
- c++中重载输出操作符,为什么要返回引用
- c++中有些重载运算符为什么要返回引用
- 为什么operator=操作符返回引用
- 周鸿祎,高司令 2010-09-28 00:41 27469人阅读 评论(185) 收藏 举报 还是感到有必要将自己的一些想法快速记下来。 首先是对周鸿祎新员工演讲的看法。 就说实话这一点来说,周鸿祎比很多人强。所以我比较喜欢引用他的话,确实比较实在,不装逼。 至于一个公司招人的风格,是公司自己定的,别人也无权评价。有人说周是画大饼,忽悠员工卖命。废话,难道新员工讲话还有别的目的吗? 但我不认为周的选人思路在别的公司可以通行。原因是这样的:近十几年来,我们听到很多人有类似的说法,比如我们公司不要
- 为什么operator=操作符返回引用
- c++赋值运算符为什么要返回引用?
- c++为什么重载输出流符号的时候一定要返回引用
- c++赋值运算符为什么要返回引用?
- 为什么operator=操作符返回引用
- 为什么operator=操作符返回引用
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- c++赋值运算符为什么要返回引用?
- c++ 重载 = 为什么返回引用类型
- C++赋值运算符重载,为什么要返回引用
- 解释下标操作符为什么要返回引用
- C++赋值运算符重载,为什么要返回引用?
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- c++中有些重载运算符为什么要返回引用?
- 关于C++中const & 返回类型的一些看法