我刚刚开始使用 C++。我对赋值和取消引用运算符的返回类型有点困惑。我正在关注 C++ Primer 一书。在各种情况下,作者说赋值运算符的返回类型是对左手操作数的类型的引用,但后来他说返回类型是左手操作数的类型。我已经提到了 C++11 Standard Sec。 5.17,其中返回类型被描述为“左值引用左操作数”。
同样,我不知道取消引用是返回指向对象还是对该对象的引用。
这些语句是否等效?如果是这样,那怎么办?任何解释将不胜感激。
最佳答案
标准正确定义了赋值运算符的返回类型。 实际上,赋值操作本身并不依赖于返回值——这就是为什么返回类型不容易理解的原因。
返回类型对于链接操作很重要。
考虑以下结构:a = b = c;
。这应该等于 a = (b = c)
,即 c
应该分配到 b
和 b
进入 a
。将其重写为 a.operator=(b.operator=(c))
。为了使 a
的赋值能够正常工作,b.operator=(c)
的返回类型必须引用内部赋值结果(它也适用于复制但这只是不必要的开销)。
解引用运算符的返回类型取决于你的内部逻辑,以适合你需要的方式定义它。
关于c++ - 赋值运算符的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15292892/