繁体   English   中英

为什么赋值运算符返回任何开头?

[英]Why does the assignment operator return anything to begin with?

我知道“ +”运算符必须返回某些内容,这对我来说很有意义。

但是我不明白的是为什么我们在重载“ =”运算符时返回一个对象。 例如,查看以下内容:

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;

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

可以返回引用,并且该引用支持分配链,例如

a = b = 42;

…,因为=是右关联的,因此被解析为

a = (b = 42);

…这样ab都设置为42

然而,你不必让你的赋值操作符返回任何东西,除非你想支持一个标准库集合使用你的对象。

不幸的是,标准库要求集合中的某个项目(如果需要可分配的话)必须提供一个返回对象引用的赋值运算符。

另外,您需要使用该声明形式,以deletedefault的赋值运算符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM