2017-07-05 33 views
-2

Cplusplus說「ostream對象(* this)」,但我不明白。返回ostream對象的指針?我已經嘗試用cout函數打印這個值,但是我始終打印0.此值如何有用?什麼返回ostream ::寫入?

+1

這意味着您正在寫入的流的引用。 –

+2

請不要使用cplusplus作爲參考或其他任何東西。 –

+1

得到[此引用一個嘗試(http://en.cppreference.com/w/cpp/io/basic_ostream/write)。此外,你知道你得到了什麼,然後你做'*這個'? – NathanOliver

回答

0

通常在C++中,不需要返回特定值的方法類(例如在本例中爲string)返回*this

C++中的每個對象都可以通過一個稱爲this指針的重要指針訪問自己的地址。這個指針是所有成員函數的隱式參數。因此,在成員函數內部,這可以用來引用調用對象。

感謝this,您可以使用方法鏈,這是一個例子:

char c[]="This this this"; 
std::cout << (std::cout.write(c,4) << " hello ") << std::endl; 

輸出: This hello 0x600e08

在這個例子中,我使用的運算符鏈上的目的,但它的與方法相同。

0x600e08是你basic_ostream對象的地址。

2
this 

是一個指向當前調用對象的指針。

*this 

取消引用指針。

這通常用於「鏈接」。 例如:

cout<<1<<2<<3<<4<<5; 

操作< <在COUT被調用: COUT < 將打印1和cout返回,那麼我們將有:

cout<<2<<3<<4<<5; 

等。