【发布时间】:2020-09-16 10:09:22
【问题描述】:
我不明白为什么将 const 添加到返回类型会阻止 (a1 = a2) = a3,正如第 2 行的评论所说。
谁能帮我解释一下?
// overloaded assignment operator;
// const return prevents: (a1 = a2) = a3
const Array& Array::operator=(const Array& right) {
if (&right != this) { // avoid self-assignment
// for Arrays of different sizes, deallocate original
// left-side Array, then allocate new left-side Array
if (size != right.size) {
delete[] ptr; // release space
size = right.size; // resize this object
ptr = new int[size]; // create space for Array copy
}
for (size_t i{ 0 }; i < size; ++i) {
ptr[i] = right.ptr[i]; // copy array into object
}
}
return *this; // enables x = y = z, for example
}
【问题讨论】:
-
返回类型为
const Array&。const使您无法链接分配(您如何分配给const的东西?)。 -
返回一个左值引用
Array&不带 const -
“避免”是什么意思?
标签: c++ constants assignment-operator chaining