クラスがあるこのコードを誰かが説明してくれますか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?
}
*this
つまり、現在のオブジェクトへの参照を返します。(まあ、非 local を返すことができますがStringStream
、目的は私が述べたものだと思います)
この手法は通常、メソッドの連鎖に使用されます。つまり、次のようなことを行います。
StringStream ss;
ss.write("Hello ").write("world!");
これは、インスタンスを変更する可能性が最も高いメソッドで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"
。
stringStream クラスへの参照を返すだけです。同じクラスのメンバー関数を作成しているので、これへのポインターを返すだけです。StringStream クラスの詳細については、ここをクリックしてください。