2013-03-08 115 views
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? 
} 
+0

您可能應該返回'* this'。 – 2013-03-08 14:56:35

回答

4

你會返回*this - 即當前對象的引用。 (嗯,你可以返回任何非本地StringStream,但我猜的目的就是我說)

這種技術通常用於方法鏈 - 即做這樣的事情:

StringStream ss; 
ss.write("Hello ").write("world!"); 
+0

您將返回StringStream的引用。對不起沒有看到Luchian評論:D不知道 – Canvas 2013-03-08 14:56:42

+0

...原因是啓用鏈接('stream.write(「hello」).write(「world」);')。 – Axel 2013-03-08 14:58:01

+0

哦......你編輯你的帖子給出完全相同的例子...... +1 – Axel 2013-03-08 14:59:10

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); 

由於該方法大概不會修改傳遞給它的數據,並且爲了能夠正確傳遞字符串文字(如例子中的和"bar"

+0

另外請注意,你的例子通過'const char *'傳遞...... – 2013-03-08 15:02:47

+0

實際上,實現該功能的原因是能夠進行鏈接。但我應該如何實現該功能,以便能夠鏈接?或者如何工作? – cybercop 2013-03-08 15:04:07

+0

@ChristopherCreutzig感謝您的編輯。我添加了一個關於這些例子的句子。 – juanchopanza 2013-03-08 15:06:24

0

您可以簡單地返回對stringStream類的引用。當你正在寫同一個類的成員函數時,你可以直接返回指針。有關StringStream類的更多信息:click here

+0

不同'stringstream'。 – juanchopanza 2013-03-08 15:07:03