提问人:underloaded_operator 提问时间:10/24/2023 更新时间:10/24/2023 访问量:59
“void” 重载运算符的返回类型 [duplicate]
"void" Return type for overloaded operator [duplicate]
问:
我目前正在学习 Dingle (2021) 的“面向对象设计选择”,这是我面向对象设计课程的必修教科书。在阅读“移动语义”一章时,我遇到了一个讨论深层和浅层复制的例子,这让我感到很不寻常。
本章的前半部分深入探讨了复制语义,特别是复制构造函数和重载赋值运算符。
为清楚起见,书中提供了相关示例,并进行了简化,如下所示:
class goodMM {
private:
int* m_heapData;
int m_size;
void copyData(const goodMM& other) {
// ...
}
public:
goodMM(int size) {
// ...
}
~goodMM() {
// ...
}
goodMM(const goodMM& other) {
// ...
}
void operator=(const goodMM& other) {
// ...
}
}
让我印象深刻的部分是定义。我被告知应该始终返回引用以允许:operator
operator
&
- 链接分配
a = b = c
- 效率(避免复制,因为复制可能很昂贵)
我试图在谷歌和 SO 搜索引擎上找到与此主题相关的内容,但结果产生了运算符。还检查了cppreferences,它们都返回了T类型的引用。void*()
[T&]
在这种情况下,宣布为无效有什么具体的好处或好处,正如书中的例子所证明的那样?operator=
答: 暂无答案
评论