为什么C++赋值运算符需要返回类型
why C++ assignment operator need a return type?
我在看C++类的赋值运算符:
A& operator= (const A& x) {
// do something
return *this;
}
但是,为什么我们需要返回这个?因为如果我们调用
a=bb是运算符=的参数,它指向a。//通过从b复制已经更改了a的正确内容的操作。如何获取返回类型?这份报税表的收件人是谁?
或者,这是为了促进a=b=c?
请告知。。谢谢
您不需要从赋值运算符返回对this
的引用;void
是有效的返回类型。然而,由于您所说的原因,这是一个强有力的约定:它有助于任务链。
就像你说的。在分配运算符中具有返回类型允许例如
(a = b).method();
虽然看起来确实有点奇怪。。。当然你可以直接返回虚空。
因此它的行为与内置类型相同
I.e
A = b = c;
由于赋值运算符从右到左分组,因此需要返回*this(因此引用高于对象)来支持以下内容:
(a = b) = c
在b是一个有副作用的函数调用的(丑陋的)情况下,这可能很有用,更重要的是,它与内置的=一致。
请注意,要支持
a = b = c
运算符=不需要返回引用,值也可以,因为后者等效于
a = (b = c)
类似的东西
(a=b).f()
如果operator=返回一个值而不是引用,也会起作用。
相关文章:
- 使用赋值运算符重载从类中返回jobject
- 标准库类型的赋值运算符的引用限定符
- 为什么我的类工作正常,即使在返回垃圾值作为赋值运算符和空复制构造函数的返回之后
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 赋值运算符的返回值可以作为参考吗?
- C++不同类型的默认赋值运算符
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- 具有临时对象的 Fundamenta 数据类型赋值运算符
- 引用模板类型的赋值运算符需要非常量重载
- 赋值运算符重载 c++ 的返回值
- 在对类对象的赋值进行链接时获取垃圾值,使用按值返回类对象的赋值运算符重载
- 带有非类型参数的C++模板类:如何重载赋值运算符
- 尽管返回了引用,但无法链接重载的赋值运算符
- 为什么赋值运算符必须返回任何内容
- 返回赋值运算符的类型
- 返回 C++ 中重载赋值运算符的类型
- 返回包装类中赋值运算符的类型
- 赋值运算符的返回类型是什么
- 为什么C++赋值运算符需要返回类型
- 从"int"到非标量类型赋值运算符的转换 - 对象到 int