[英]Why do I need to use a const reference parameter in a << overloading function when using an overloaded post-decrement operator?
我有以下<<
重载函数:
ostream& operator<<(ostream& output, HW4& rhs)
{
for(int i = 0; i < HW4::size; ++i)
{
output << rhs.array[i] << " ";
}
return output;
}
我还具有以下递减后重载功能:
HW4 HW4::operator--(int)
{
HW4 temp = *this;
int hold;
for(int i = 0; i < size/2; ++i)
{
hold = array[i];
array[i] = array[size - i - 1];
array[size - i - 1] = hold;
}
return temp;
}
我不明白为什么
cout << object2-- << endl << endl;
除非我将<<
重载函数更改为具有这样的const
引用参数,否则不会编译
ostream& operator<<(ostream& output, const HW4& rhs)
HW4::operator--(int)
按值返回,那么object2--
返回的将是一个临时对象,该对象不能绑定到对非const的左值引用。
另一方面,可以将临时对象绑定到const
左值引用。 这就是为什么让operator<<
const HW4&
起作用的原因。 通常, operator<<
仅用于输出,不应更改传递的对象; 因此,您应使用 const HW4&
作为参数声明operator<<
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.