分配运营商为什么返回任何开始

Why does the assignment operator return anything to begin with?

本文关键字:任何 开始 返回 为什么 运营商 分配      更新时间:2023-10-16

我知道" "操作员必须返回某些东西,这对我来说很有意义。

但是我不明白的是为什么我们在超载" ="操作员时返回对象。例如,查看以下内容:

const Scene& Scene::operator=(const Scene &source){
    if(this != &source){
         count = source.count
    }
    return *this;
}

我们不能仅通过使用它来实现相同的效果吗?

void Scene::operator=(const Scene &source){
    if(this != &source){
         count = source.count
    }
}

=操作员的语义是您可以链接分配:

a = b = c;

您必须返回一个对象才有意义。

you can 返回参考

a = b = 42;

…由于 =是正确的缔合性,因此将其解析为

a = (b = 42);

…因此ab都设置为42

但是,除非您想支持在标准库集合中支持对象的使用。

不幸的是,标准库要求集合中的项目(如果需要分配)必须提供一个分配运算符,以返回对象的参考。

您还需要使用该声明形式才能进行deletedefault您的班级分配操作员。