有人可以解釋我這個代碼 有一個類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?
}
有人可以解釋我這個代碼 有一個類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
- 即當前對象的引用。 (嗯,你可以返回任何非本地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);
由於該方法大概不會修改傳遞給它的數據,並且爲了能夠正確傳遞字符串文字(如例子中的和"bar"
。
另外請注意,你的例子通過'const char *'傳遞...... – 2013-03-08 15:02:47
實際上,實現該功能的原因是能夠進行鏈接。但我應該如何實現該功能,以便能夠鏈接?或者如何工作? – cybercop 2013-03-08 15:04:07
@ChristopherCreutzig感謝您的編輯。我添加了一個關於這些例子的句子。 – juanchopanza 2013-03-08 15:06:24
您可以簡單地返回對stringStream類的引用。當你正在寫同一個類的成員函數時,你可以直接返回指針。有關StringStream類的更多信息:click here
不同'stringstream'。 – juanchopanza 2013-03-08 15:07:03
您可能應該返回'* this'。 – 2013-03-08 14:56:35