この&
文字にはc++ でさまざまな用途があることは理解していますが、以下のコード サンプル (ここから取得)でその機能が何であるかを理解するのに苦労しています (左の引数での使用ではなく、std ostream&
.
std::ostream& operator<< (std::ostream &out, const Point &point)
{
// Since operator<< is a friend of the Point class, we can access Point's members directly.
out << "Point(" << point.m_x << ", " << point.m_y << ", " << point.m_z << ")";
return out;
}
& が関数パラメーター内の参照渡しを表す場合の使用方法は理解できたと思いますが、関数の外部で何が行われるかはわかりません。
私が見る限り (それほど遠くはありません)、これstd::ostream
はクラスであり、インスタンス化すると、operator を介して<<
文字列などをコンソールに出力することができます。次に&out
、上記のコードにはstd::ostream
、 ( std::cout
?) のインスタンスへの参照があります。これは、関数内でフィードされpoint.m_x
、複数の<<
操作を実行できるように返されます。
& 文字の最初のインスタンスは、std::ostream で定義された << 演算子を何らかの方法で変更して、サンプルの Point クラスのメンバーで機能できるようにすることを何らかの方法で通信していると推測していますが、私はそれよりも理解を深めたい。
これは、オブジェクトへの参照を返していることを意味します (この場合、渡されたのと同じオブジェクト out です。
これは連鎖する場合に便利です。これにより、対象のオブジェクトのコピーを作成しなくても、a << b << c .... のようなことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加