這可能是一個初學者的問題,並理解cout如何工作可能是關鍵。如果有人可以鏈接到一個很好的解釋,那會很好。 cout<<cout
和cout<<&cout
在Linux x86機器上打印由4分隔的十六進制值。cout << cout和cout <<&cout在C++中有什麼區別?
回答
cout << cout
相當於cout << cout.operator void *()
。這是C++ 11之前用來確定iostream是否處於故障狀態的習慣用法,並在std::ios_base
中實現;它通常會返回地址static_cast<std::ios_base *>(&cout)
。
cout << &cout
打印出地址cout
。
由於std::ios_base
是虛擬基類cout
,因此它可能不一定與cout
連續。這就是爲什麼它打印一個不同的地址。
cout<<&cout
正在將地址cout
傳遞給流。
cout << &cout
正在通過cout
的地址cout
。
cout << cout
正在打印使用其operator void*
隱式鑄造cout
到void*
指針的值。
鏈接已損壞。 – Destructor
由於找不到合適的替代品,我刪除了該鏈接。謝謝 – GWW
cout << cout
正在使用內置轉換爲void*
存在布爾測試目的。由於某些無意義的原因,您的實現使用了一個4字節的地址到std::cout
對象中。在C++ 11中,此轉換已被刪除,並且不應該編譯。
cout << &cout
正在打印std::cout
對象的地址。
如已經陳述的,使用cout << cout
提供了一種用於測試布爾(while (some_stream){ ... }
等)
它輸出值的void*
轉換& COUT + 4,因爲轉換是在基實現完成,並投射到它自己的類型,這是from libstdc++:
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
- 1. cout << cout'和'cout <<&cout'在C++中的區別?
- 2. std :: cout << x;和std :: cout << x << std :: endl;?
- 3. cout << stringstream
- 4. 有沒有人知道endl(cout)和cout << endl之間的區別?
- 5. visual studios cout << not working
- 6. cout << std :: ios :: hex做什麼?
- 7. 「cout <<(_ 1 * 3)」是什麼意思?
- 8. C++格式的cout <<自動
- 9. C++對齊打印時的cout <<
- 10. 爲cout重載'<'Operator Breaks <<?
- 11. setbase(8)和std :: cout << std :: oct
- 12. 在cout上的System.AccessViolationException << line
- 13. operator <<:std :: cout << i <<(i << 1);
- 14. 「<<" and ">>」是什麼意思在c + +的cout/cin?
- 15. 如何使用的cout << MyClass的
- 16. cout的奇怪行爲<< Boost :: posix_time
- 17. 結果cout <<「Hello」+ 1 << endl; (C++)
- 18. C++。爲什麼std :: cout << char + int打印int值?
- 19. 什麼是std :: cout << std :: cin做什麼?
- 20. 由於cout << cin.rdbuf()導致的無限循環,爲什麼?
- 21. 爲什麼輸出cout << setprecision(2)<< 0.999是1而不是1.0?
- 22. 使用CIN >>和cout <<來填充類C++
- 23. C++的std :: cout和<<運算符,優先
- 24. 要調用`cout << std :: vector <_Ty>`包含哪個頭?
- 25. std :: cout和std :: wcout有什麼區別?
- 26. 當我們使用cout時boost :: any和boost :: variant之間的區別<<
- 27. C++ <algorithm>:將地圖<A,B>複製到cout?
- 28. 如何爲自己的C++ cout <<像對象
- 29. C++「的cout <<號」的結果與打印「號%」屏幕
- 30. java/C++輸出是如何工作的? cout << System.out.print
這是一個人的例子。 http://ideone.com/0FZXZ –
究竟是什麼*是問題? – Puppy
你爲什麼這麼問。這個問題沒有任何意義,他們不是這樣做的邏輯。 –