我正在查看C ++类的赋值运算符:
A& operator= (const A& x) {
// do something
return *this;
}
然而,为什么我们需要返回*这个?因为如果我们打电话
a = b b是operator =的参数,这指向a。 //通过从b复制,做了一些已经改变了a的正确内容的东西。如何获得返回类型?这次回归的收件人是什么?
或者,这是为了促进a = b = c?
请指教..谢谢!
答案 0 :(得分:6)
您不需要从作业运营商处返回对\s*
的引用; this
是有效的返回类型。但是,由于您声明的原因,这是一个强有力的约定:它有助于分配链接。
答案 1 :(得分:1)
(a = b).method();
虽然它看起来有点奇怪......当然你可以退回虚空。
答案 2 :(得分:0)
因此它的行为与内置类型相同
即
A = b = c;
答案 3 :(得分:0)
由于赋值运算符从右到左分组,因此需要返回* this(这是一个比对象更重要的参考)来支持以下内容:
(a = b) = c
这在(丑陋的)情况下很有用,b是带副作用的函数调用,更重要的是,它与builtin =一致。
请注意支持
a = b = c
operator =不需要返回引用,值也可以,因为后者等同于
a = (b = c)
像
这样的东西(a=b).f()
如果operator =返回值而不是引用,也会起作用。