Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么是C++;赋值运算符需要返回类型吗? 我正在看C++类的赋值运算符: A& operator= (const A& x) { // do something return *this; }_C++ - Fatal编程技术网

为什么是C++;赋值运算符需要返回类型吗? 我正在看C++类的赋值运算符: A& operator= (const A& x) { // do something return *this; }

为什么是C++;赋值运算符需要返回类型吗? 我正在看C++类的赋值运算符: A& operator= (const A& x) { // do something return *this; },c++,C++,但是,我们为什么要退回这个?因为如果我们打电话 a=b b是运算符=,它指向a的参数通过从b复制,做一些已经改变了a的正确内容的事情。如何获取返回类型?此报税表的收件人是什么 或者,这是为了促进a=b=c 请告知。。谢谢 您不需要从赋值运算符返回对该的引用无效是有效的返回类型。但是,这是一个强大的约定,因为您声明:它有助于分配链接。您不需要从分配操作符返回对该的引用无效是有效的返回类型。然而,这是一个很强的惯例,因为你说:它有助于作业链。就像你说的那样。例如,在赋值运算符中具有返回类型允许 (a

但是,我们为什么要退回这个?因为如果我们打电话

a=b b是运算符=,它指向a的参数通过从b复制,做一些已经改变了a的正确内容的事情。如何获取返回类型?此报税表的收件人是什么

或者,这是为了促进a=b=c


请告知。。谢谢

您不需要从赋值运算符返回对该的引用<代码>无效是有效的返回类型。但是,这是一个强大的约定,因为您声明:它有助于分配链接。

您不需要从分配操作符返回对该的引用<代码>无效是有效的返回类型。然而,这是一个很强的惯例,因为你说:它有助于作业链。

就像你说的那样。例如,在赋值运算符中具有返回类型允许

(a = b).method();

虽然看起来真的有点奇怪。。。当然,你可以直接返回void。

就像你说的那样。例如,在赋值运算符中具有返回类型允许

(a = b).method();

虽然看起来真的有点奇怪。。。当然,您可以直接返回void。

以便它的行为与内置类型相同


因此,它的行为与内置类型相同


由于赋值运算符从右向左分组,因此需要返回*this(因此是引用而不是对象)来支持以下内容:

(a = b) = c
这在b是一个有副作用的函数调用,更重要的是,它与builtin=一致的情况下非常有用

请注意,要支持

a = b = c
运算符=不需要返回引用,值也可以,因为后者相当于

a = (b = c)
差不多

(a=b).f()

如果operator=返回一个值而不是一个引用,也会起作用。

因为赋值操作符从右向左分组,所以需要返回*这个(因此是一个引用而不是一个对象)来支持以下操作:

(a = b) = c
这在b是一个有副作用的函数调用,更重要的是,它与builtin=一致的情况下非常有用

请注意,要支持

a = b = c
运算符=不需要返回引用,值也可以,因为后者相当于

a = (b = c)
差不多

(a=b).f()

如果操作符=返回值而不是引用,也会工作。

赋值是C++中的表达式。返回<>代码> * 让您与普通旧数据类型的行为相适应。赋值是C++中的表达式。返回
*这个
可以让您与普通旧数据类型的行为保持一致。