[英]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);
…这样a
和b
都设置为42
。
然而,你不必让你的赋值操作符返回任何东西,除非你想支持一个标准库集合使用你的对象。
不幸的是,标准库要求集合中的某个项目(如果需要可分配的话)必须提供一个返回对象引用的赋值运算符。
另外,您需要使用该声明形式,以delete
或default
的赋值运算符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.