理解代码

时间:2013-03-08 14:55:14

标签: c++ reference

有人可以解释一下这段代码 有一个班级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?
}

3 个答案:

答案 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