std::cout のオーバーロードにおける & 文字の機能は何ですか?

ジェームズ・カーズ

この&文字には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]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++のstd :: Variant cout

分類Dev

std :: coutは、構造体のオーバーロードされた '<<'演算子では機能しません

分類Dev

std :: coutの機能は何ですか?単純なカウトに似ていますか?

分類Dev

std :: coutとstd :: wcoutの違いは何ですか?

分類Dev

std :: coutの出力がオーバーフローするのはなぜですか?

分類Dev

16進数のc ++ std :: cout

分類Dev

C ++の概念とstd :: cout

分類Dev

printf()がカーネル内で機能するのに、std :: coutを使用すると機能しないのはなぜですか?

分類Dev

std :: coutを使用する場合のSerializeToZeroCopyStreamとSerializeToOstreamの違いは何ですか?

分類Dev

std :: coutに時間がかかるのはなぜですか?

分類Dev

coutはstdのメンバーではありません

分類Dev

「std :: cout << std :: endl;」はどのように機能しますか コンパイル?

分類Dev

std :: coutがchar []を出力できるのはなぜですか?

分類Dev

std :: coutが一度に出力できる文字または文字、またはデータのバイト数は?

分類Dev

C ++のstd:coutについて

分類Dev

std :: coutの奇妙な振る舞い

分類Dev

std :: ofstream内のstd :: coutをコピーします(c ++)

分類Dev

std :: coutをメンバーへのポインタに適用した場合に受け取る値

分類Dev

「std :: cout」への未定義の参照

分類Dev

64を表示するC ++ std :: cout

分類Dev

一貫性のない std::cout 動作

分類Dev

std :: coutの予期しない動作

分類Dev

std :: coutは、QNXで\ nの後に文字を出力しません

分類Dev

coutはstdのメンバーではなく、c ++に関するその他の問題

分類Dev

C++ エラー: `std::cout` の '::' の使用が無効です

分類Dev

easylogging ++と同じ方法でオーバーロードされた挿入演算子をチェーンすることにより、std :: cout構文を模倣するC ++クラスを作成することは可能ですか?

分類Dev

coutのオーバーロード中の未定義の参照

分類Dev

printfとstd :: coutの出力が異なるのはなぜですか?

分類Dev

マルチスレッドUDPサーバーでのio_contextまたはstd :: coutの奇妙な動作

Related 関連記事

  1. 1

    C ++のstd :: Variant cout

  2. 2

    std :: coutは、構造体のオーバーロードされた '<<'演算子では機能しません

  3. 3

    std :: coutの機能は何ですか?単純なカウトに似ていますか?

  4. 4

    std :: coutとstd :: wcoutの違いは何ですか?

  5. 5

    std :: coutの出力がオーバーフローするのはなぜですか?

  6. 6

    16進数のc ++ std :: cout

  7. 7

    C ++の概念とstd :: cout

  8. 8

    printf()がカーネル内で機能するのに、std :: coutを使用すると機能しないのはなぜですか?

  9. 9

    std :: coutを使用する場合のSerializeToZeroCopyStreamとSerializeToOstreamの違いは何ですか?

  10. 10

    std :: coutに時間がかかるのはなぜですか?

  11. 11

    coutはstdのメンバーではありません

  12. 12

    「std :: cout << std :: endl;」はどのように機能しますか コンパイル?

  13. 13

    std :: coutがchar []を出力できるのはなぜですか?

  14. 14

    std :: coutが一度に出力できる文字または文字、またはデータのバイト数は?

  15. 15

    C ++のstd:coutについて

  16. 16

    std :: coutの奇妙な振る舞い

  17. 17

    std :: ofstream内のstd :: coutをコピーします(c ++)

  18. 18

    std :: coutをメンバーへのポインタに適用した場合に受け取る値

  19. 19

    「std :: cout」への未定義の参照

  20. 20

    64を表示するC ++ std :: cout

  21. 21

    一貫性のない std::cout 動作

  22. 22

    std :: coutの予期しない動作

  23. 23

    std :: coutは、QNXで\ nの後に文字を出力しません

  24. 24

    coutはstdのメンバーではなく、c ++に関するその他の問題

  25. 25

    C++ エラー: `std::cout` の '::' の使用が無効です

  26. 26

    easylogging ++と同じ方法でオーバーロードされた挿入演算子をチェーンすることにより、std :: cout構文を模倣するC ++クラスを作成することは可能ですか?

  27. 27

    coutのオーバーロード中の未定義の参照

  28. 28

    printfとstd :: coutの出力が異なるのはなぜですか?

  29. 29

    マルチスレッドUDPサーバーでのio_contextまたはstd :: coutの奇妙な動作

ホットタグ

アーカイブ