C ++重载运算符<<为什么&需要?
c++ overloading operator << why & needed?
ostream& operator<<(ostream& cout, const Complex& num) {
std::cout << num.a << "+i" << num.b;
return std::cout;
}
当我重载 <<
运算符时,为什么我必须在 ostream
旁边编码 &?
因为
对于 return 类型:
ostream
对象不可复制,因此除非您执行 move
操作,否则它们不能用作 return 类型。
参数:
ostream
对象不可复制,因此除非执行 move
操作,否则它们不能用作参数类型。
- 预计
operator <<
可能会改变参数的状态,所以我们应该通过引用传递。
考虑到参数的第二个原则,您的代码应该更正为:
ostream& operator<<(ostream& cout, const Complex& num) {
cout << num.a << "+i" << num.b;
return cout;
}
ostream& operator<<(ostream& cout, const Complex& num) {
std::cout << num.a << "+i" << num.b;
return std::cout;
}
当我重载 <<
运算符时,为什么我必须在 ostream
旁边编码 &?
因为
对于 return 类型:
ostream
对象不可复制,因此除非您执行move
操作,否则它们不能用作 return 类型。
参数:
ostream
对象不可复制,因此除非执行move
操作,否则它们不能用作参数类型。- 预计
operator <<
可能会改变参数的状态,所以我们应该通过引用传递。
考虑到参数的第二个原则,您的代码应该更正为:
ostream& operator<<(ostream& cout, const Complex& num) {
cout << num.a << "+i" << num.b;
return cout;
}