1

クラスがあるこのコードを誰かが説明してくれますかStringStream?私が得られないのはStringStream& write(char*). cppファイルにある場合

StringStream& StringStream::write(char* text)
{
   //what values can i return??
   //can i return address of character text is currently pointing to?
}
4

3 に答える 3

4

*thisつまり、現在のオブジェクトへの参照を返します。(まあ、非 local を返すことができますがStringStream、目的は私が述べたものだと思います)

この手法は通常、メソッドの連鎖に使用されます。つまり、次のようなことを行います。

StringStream ss;
ss.write("Hello ").write("world!");
于 2013-03-08T14:55:52.537 に答える
3

これは、インスタンスを変更する可能性が最も高いメソッドでStringStreamあり、への参照を返しますStringStream。したがって、インスタンス自体への参照を返す必要があります

StringStream& StringStream::write(char* text)
{
  // do stuff
  return *this;
}

これにより、連鎖を実行できます。

StringStream s;
s.write("foo").write("bar");

そうは言っても、writeメソッドが次の値を取ることを期待していたでしょうconst char*

StringStream& write(const char* text);

"foo"メソッドは渡されたデータをおそらく変更しないため、例のandなどの文字列リテラルを正しく渡すために必要です"bar"

于 2013-03-08T14:57:48.070 に答える
0

stringStream クラスへの参照を返すだけです。同じクラスのメンバー関数を作成しているので、これへのポインターを返すだけです。StringStream クラスの詳細については、ここをクリックしてください。

于 2013-03-08T15:00:42.873 に答える