2017-07-05 35 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; 

等。