到目前为止,我所读到的是赋值运算符总是返回一个引用。 我的问题是,当一个空白只能完成工作时,为什么它必须返回任何东西。
例如像这样的事情
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?
答案 0 :(得分:0)
不一定是这样,但c ++(和c)赋值运算符被定义为这样做,所以在这些语言中他们必须这样做。
答案 1 :(得分:0)
这样你就可以写下面的内容。假设类foo
有一个默认构造函数,一个以int
作为参数(只使用默认的浅拷贝赋值运算符):
foo A(10);
foo B;
foo C = A = B;
如果赋值运算符没有返回任何内容,则此类赋值将不起作用(如果A = B
未返回对A
的引用)。