为什么赋值运算符必须返回任何内容

时间:2014-02-16 00:22:08

标签: c++

到目前为止,我所读到的是赋值运算符总是返回一个引用。 我的问题是,当一个空白只能完成工作时,为什么它必须返回任何东西。

例如像这样的事情

class foo
{

   void operator=(const foo& that)
   {
      this->myint = that.myint;
      .....
      .....
   }
}

我希望这个问题有道理吗?因为它满足a = b

更新:我从答案中了解到,返回的主要原因是满足a = b = c这样的表达式。任何人都可以解释为什么上述内容不适用于a=b=c?由于调用了a的operator =并将b复制到a上,并且调用b的运算符并将c复制到b?

2 个答案:

答案 0 :(得分:0)

不一定是这样,但c ++(和c)赋值运算符被定义为这样做,所以在这些语言中他们必须这样做。

答案 1 :(得分:0)

这样你就可以写下面的内容。假设类foo有一个默认构造函数,一个以int作为参数(只使用默认的浅拷贝赋值运算符):

foo A(10);
foo B;
foo C = A = B;

如果赋值运算符没有返回任何内容,则此类赋值将不起作用(如果A = B未返回对A的引用)。