C++入出力演算子のリロード
1492 ワード
C++のストリーム挿入演算子">>"とストリーム出力演算子"<>"演算子がリロードされましたが、具体的にはどのように実現されていますか?
入力演算子のリロード
C++の入力演算子のリロード最初のパラメータは入力ストリームオブジェクトの参照であり、2番目のパラメータは入力が必要なクラスオブジェクトの参照であり、一般的に2番目のパラメータを非constタイプとして定義します.そうしないと値を割り当てることができません.戻り値は入力ストリームistream&です.
出力演算子のリロード
C++で出力演算子が再ロードされる最初のパラメータは出力ストリームオブジェクトの参照であり、2番目のパラメータは出力が必要なクラスオブジェクトの参照であり、出力時にオブジェクトを変更する必要がなく、戻り値は出力ストリームostream&であるため、一般的に2番目のパラメータをconstタイプとして定義します.
なぜ入出力演算子をfriend関数として定義しますか?
共通点は、入力演算子のリロード関数と出力演算子のリロード関数をメタクラスとして宣言することですが、なぜこのように設計されているのでしょうか.
ゆうげんかんすう
友元関数は任意のクラスに呼び出され,クラス共有を実現し,不要なシステムオーバーヘッドを低減し,効率を向上させ,他のクラスがこのクラスのプライベート変数にアクセスできるようにすることを知っている.しかし,クラスのパッケージング性を損なうという欠点もあり,一般的には使用を推奨しない.
友元関数の使用シーン入出力演算子で をリロードする.両クラスが共有データを必要とする場合 の原因となる
ここでは友元関数として定義します.友元関数にはthisポインタが含まれていないため、最初のパラメータは必ず入出力ストリームの参照であることを要求します.そうしないと、コードはa<
入力演算子のリロード
istream& operator>>(istream& in, A& a)
{
in>>" 1">>" 2"...;
return in;
}
C++の入力演算子のリロード最初のパラメータは入力ストリームオブジェクトの参照であり、2番目のパラメータは入力が必要なクラスオブジェクトの参照であり、一般的に2番目のパラメータを非constタイプとして定義します.そうしないと値を割り当てることができません.戻り値は入力ストリームistream&です.
出力演算子のリロード
ostream& operator<" 1"<<" 1"...;
return out;
}
C++で出力演算子が再ロードされる最初のパラメータは出力ストリームオブジェクトの参照であり、2番目のパラメータは出力が必要なクラスオブジェクトの参照であり、出力時にオブジェクトを変更する必要がなく、戻り値は出力ストリームostream&であるため、一般的に2番目のパラメータをconstタイプとして定義します.
なぜ入出力演算子をfriend関数として定義しますか?
共通点は、入力演算子のリロード関数と出力演算子のリロード関数をメタクラスとして宣言することですが、なぜこのように設計されているのでしょうか.
ゆうげんかんすう
友元関数は任意のクラスに呼び出され,クラス共有を実現し,不要なシステムオーバーヘッドを低減し,効率を向上させ,他のクラスがこのクラスのプライベート変数にアクセスできるようにすることを知っている.しかし,クラスのパッケージング性を損なうという欠点もあり,一般的には使用を推奨しない.
友元関数の使用シーン
ここでは友元関数として定義します.友元関数にはthisポインタが含まれていないため、最初のパラメータは必ず入出力ストリームの参照であることを要求します.そうしないと、コードはa<