我正在自学 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;
}
- 谁能解释(在基本层面上)为什么我们必须在这里使用友元函数声明?
- 为什么我们必须通过引用传递所有参数和运算符的返回类型?
- 这个函数在不使用 const 的情况下也能正常工作,但为什么我们在这里使用 const 呢?将 Complex 作为常量引用传递有什么好处?