1
我想知道cout<<cout
和cout<<&cout
之間在c++
之間的實際差別?在我的編譯器中cout<<cout
返回0x477864
& cout<<&cout
隨時返回0x477860
。它表明它們之間有1位數的差別。這些意義何在?cout << cout'和'cout <<&cout'在C++中的區別?
我想知道cout<<cout
和cout<<&cout
之間在c++
之間的實際差別?在我的編譯器中cout<<cout
返回0x477864
& cout<<&cout
隨時返回0x477860
。它表明它們之間有1位數的差別。這些意義何在?cout << cout'和'cout <<&cout'在C++中的區別?
當你這樣做:
cout << cout;
你是依靠流的隱式轉換void*
。使用此值(pre-C++ 11)來測試流的狀態。沒有指定實際值是什麼,如果流處於失敗狀態,它只需要爲NULL,否則就是非NULL。也許它會返回對象成員的地址,但它並不重要,並且已經定義了實現。
當你這樣做:
cout << &cout;
,這是獲得的cout
實際地址。
請注意,在C++ 11及更高版本中,第一個cout << cout;
將不再編譯,因爲隱式轉換爲void*
不再存在。而是有一個明確的轉換爲bool
服務於相同的目的。
http://ideone.com/JfKmxd –
也許是一個多繼承的問題?就像cout可以隱式轉換爲其基類之一的指針,而&cout給出cout的第一個基類的地址。 – KABoissonneault