我自己学习c ++。我正在研究运算符重载,我能够理解加减运算符重载。但是I / O操作符的重载有点令人困惑。我已经为复数创建了一个类,现在我正在重载运算符。
来自Complex.h的函数原型
friend ostream& operator<<(ostream&, const Complex&);
来自Complex.cpp的函数
ostream& operator<<(ostream& os, const Complex& value){
os << "(" << value.r <<", "
<< value.i << ")" ;
return os;
}
对于friend ostream& operator<<(ostream&,const Complex&);
:
因为您在这里声明了一个自由函数,并且希望它访问对象的内部(私有/受保护)Complex
。对于那些重载,使用“无好友功能”是很常见的,但肯定不是强制性的。
因为流是不可复制的(这没有意义,另请参阅本文),所以按值传递将需要复制。Complex
通过价值传递也将需要无用的副本。
因为这些输出运算符不应该修改它们正在处理的对象(输入运算符显然是),所以请添加const
以确保这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句