我刚刚开始 C++。我对赋值和取消引用运算符的返回类型有点困惑。我正在关注《C++ Primer》这本书。在各种场合,作者都说赋值运算符的返回类型是对左手操作数类型的引用,但后来,他说返回类型是左手操作数的类型。我已经提到了 C++11 Standard Sec。 5.17,其中返回类型被描述为“引用左手操作数的左值”。
同样,我无法弄清楚取消引用是否返回指向的对象或对该对象的引用。
这些陈述等价吗?如果是这样,那又如何呢?
该标准正确定义了赋值运算符的返回类型。
实际上,赋值操作本身并不依赖于返回值——这就是返回类型不容易理解的原因。
返回类型对于链接操作很重要。
考虑以下构造:a = b = c;
。这应该等于a = (b = c)
, i.e. c
应分配到b
and b
into a
。将其重写为a.operator=(b.operator=(c))
。为了分配到a
正确工作的返回类型b.operator=(c)
必须引用内部赋值结果(它也可以与复制一起使用,但这只是不必要的开销)。
解引用运算符返回类型取决于您的内部逻辑,以适合您需要的方式定义它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)