operator << Overloading Ostream
-
30-09-2019 - |
質問
coutを使用するために:std :: cout << myobject、なぜオストストリームオブジェクトを渡さなければならないのですか?それが暗黙のパラメーターだと思いました。
ostream &operator<<(ostream &out, const myClass &o) {
out << o.fname << " " << o.lname;
return out;
}
ありがとう
解決
別のメンバー関数を追加していません ostream
, 、それはクラスの再定義が必要だからです。追加することはできません myClass
, 、以来 ostream
最初に行きます。あなたができる唯一のことは、独立した関数に過負荷を追加することです。これはあなたが例でやっていることです。
他のヒント
そうでなければ最初の議論となるクラスのメンバー関数である場合にのみ。したがって、それは次のとおりです。
class ostream {
...
ostream &operator << (const myClass &o);
...
};
以来 ostream
クラスのずっと前に書かれていたので、クラスを入れるという問題がわかります。したがって、オペレーターを自立型関数として実装する必要があります。
(return type) operator << ( (left hand side), (right hand side) );
オペレーターがクラスのメンバー関数として実装される場合、左側は this
, 、そして議論は右側になります。 (バイナリ演算子の場合 - 単位演算子も同様に動作します。)
メンバー関数ではなく、自由関数を過負荷にしているためです。
所属していません StackOverflow