2017-07-05 2 views
-2

Cplusplus sagen "Das Ostream-Objekt (* dies)", aber ich verstehe nicht. Gibt den Zeiger des Ostream-Objekts zurück? Ich habe versucht, diesen Wert mit Cout-Funktion zu drucken, aber ich drucke immer 0. Und wie kann dieser Wert nützlich sein?Was zurück ostream :: schreiben?

+1

Es bedeutet eine Referenz auf den Stream, an den Sie schreiben. –

+2

Und bitte verwenden Sie nicht cplusplus als Referenz oder für etwas anderes. –

+1

Geben Sie [diese Referenz einen Versuch] (http://en.cppreference.com/w/cpp/io/basic_ostream/write). Wissen Sie auch, was Sie bekommen, dann tun Sie '* this'? – NathanOliver

Antwort

0

Im Allgemeinen in C++, Methoden Klassen, die nicht einen bestimmten Wert zurückgeben müssen, wie in diesem Fall (oder mit string zum Beispiel), geben *this zurück.

Jedes Objekt in C++ hat Zugriff auf seine eigene Adresse über einen wichtigen Zeiger namens Zeiger. Der This-Zeiger ist ein impliziter Parameter für alle Elementfunktionen. Daher kann dies innerhalb einer Elementfunktion dazu verwendet werden, sich auf das aufrufende Objekt zu beziehen.

Dank this, können Sie die Methode Verkettung verwenden können, ist dies ein Beispiel:

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

Ausgang: This hello 0x600e08

In diesem Beispiel habe ich Bediener absichtlich verwendet Chaining, aber es ist die Gleiches mit Methoden.

0x600e08 ist die Adresse Ihres Objekts basic_ostream.

2
this 

ist ein Zeiger auf das aktuelle aufgerufene Objekt.

*this 

dereferenziert den Zeiger.

Dies wird oft für "Verkettung" verwendet. Zum Beispiel:

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

Betreiber < < in cout aufgerufen wird: cout < wird cout 1 und zurück drucken, haben wir dann:

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

und so weiter.