分配运营商为什么返回任何开始
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;
您必须返回一个对象才有意义。
you can 返回参考
a = b = 42;
…由于 =
是正确的缔合性,因此将其解析为
a = (b = 42);
…因此a
和b
都设置为42
。
但是,除非您想支持在标准库集合中支持对象的使用。
不幸的是,标准库要求集合中的项目(如果需要分配)必须提供一个分配运算符,以返回对象的参考。
您还需要使用该声明形式才能进行delete
或default
您的班级分配操作员。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 链表c++插入,所有情况都已检查,但没有任何工作
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- C++模板函数,用于比较任何无符号整数和有符号整数
- 如何从头开始创建 avi 文件?
- GStreamer在开始任何播放之前进行搜索
- 将文本文件读取到2D数组中,但数组开始为超过数组[39][]的任何内容输出胡言乱语
- 为什么我的代码在终端中没有输出任何内容.开始新行没有错误
- 分配运营商为什么返回任何开始
- 找到最大路径总和,我们可以在二叉树中的任何节点开始和结束
- 从任何位置开始迭代整个数组,仅使用一个变量
- Regex:接受任何地方的空间,但在开始
- 停止定时器在任何时间和开始定时器再次在c++