独学で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 を定数参照として渡す利点は何ですか?