ostream&
オブジェクトを返すには、togeather事業者の束チェーンに私たちをことができます。
は、これは実際ostream& operator<<(ostream& os, const char* c)
を2回呼び出している
cout << "Hello " << "World";
この文を考えてみましょう。我々は、実行の順序を考えると、我々が得る:
(cout << "Hello ") << "World";
この関数は、右に左と"Hello "
にcout
を受け入れます。右手側の内容をコンソールに出力します。それからcout
を返します。今、私たちは離れてブラケットを取り、取得
(cout) << "World";
:
cout << "World;
この1に対処する方がはるかに簡単です私たちは、私たちがこれを取得する最初のステップの後に残っているものを検討してください。今度は関数を再び "World"を出力するようにコールし、再び出力を返します。これは単に何もしません。
我々はvoid
代わりのostream&
を返された場合は、(cout << "Hello ")
は(void)
に減少するであろう。それで私たちは次のようになります:
(void) << "World";
これはオーバーロードに一致しないため、エラーが発生します。 (cout << "Hello ")
はまだ動作しますが、同じ行に<< "World"
をチェーンすることはできません。