cout を std::cout << myObject のように使用するには、なぜ ostream オブジェクトを渡す必要があるのですか? それは暗黙のパラメーターだと思いました。
ostream &operator<<(ostream &out, const myClass &o) {
out << o.fname << " " << o.lname;
return out;
}
ありがとう
cout を std::cout << myObject のように使用するには、なぜ ostream オブジェクトを渡す必要があるのですか? それは暗黙のパラメーターだと思いました。
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
で、引数は右辺になります。(二項演算子の場合 - 単項演算子は同様に機能します。)
メンバー関数ではなく、フリー関数をオーバーロードしているためです。