簡體   English   中英

'cout <之間的區別

[英]Difference between 'cout<<cout' and 'cout<<&cout' in c++?

我想知道c++ cout<<coutcout<<&cout之間的實際區別嗎? 在我的編譯器中, cout<<cout 0x477864返回0x477864cout<<&cout隨時返回0x477860 ,這表明它們之間有1位的差異,它們的意義是什么?

執行此操作時:

cout << cout;

您依賴於流的隱式轉換為void* 此值(c ++ 11之前的版本)用於測試流的狀態。 值的實際含義是不確定的,如果流處於失敗狀態,則只需要為NULL,否則為非NULL。 也許它正在返回對象成員的地址,但這並不是很重要,並且是由實現定義的。

執行此操作時:

cout << &cout;

那就是得到cout的實際地址。

請注意,在C ++ 11及更高版本中,第一個是cout << cout; ,將不再編譯,因為隱式轉換為void*不再存在。 取而代之的是顯式轉換為bool以達到相同的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM