[英]Difference between 'cout<<cout' and 'cout<<&cout' in c++?
我想知道c++
cout<<cout
和cout<<&cout
之間的實際區別嗎? 在我的編譯器中, cout<<cout
0x477864
返回0x477864
& cout<<&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.