有人可以解释一下这段代码
有一个班级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?
}
答案 0 :(得分:4)
您将返回*this
- 即对当前对象的引用。 (好吧,你可以退回任何非本地的StringStream
,但我想我的目的就是我所说的那个)
此技术通常用于方法链接 - 即执行以下操作:
StringStream ss;
ss.write("Hello ").write("world!");
答案 1 :(得分: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"
和"bar"
。
答案 2 :(得分:0)
您只需返回对stringStream类的引用即可。在编写同一个类的成员函数时,您只需返回指向此的指针即可。有关StringStream类的更多信息:click here