0
A
回答
0
std::ostream
有一個轉換運算符,允許轉換爲void*
,以便您可以測試操作是否成功。在表達
std::cout << std::cout // similar to
// std::cout.operator<<(std::cout.operator void*())
右手操作數表達std::cout
使用該轉換運算符,然後將operator<<
does the output of this via the ostream operand隱式轉換爲void const*
。看到這另一種方法是:
const void* cp = std::cout.operator void*();
std::cout << cp << "Hello!" << std::endl;
std::cout << std::cout << "Hello!";
輸出:
0x601088Hello!
0x601088你好!
2
std::cout
具有類型std::ostream
(或東西從 它衍生的)。沒有<<
這個類型在右邊,所以 編譯器尋找一個轉換。在pre-C++ 11中, std::ostream
隱式轉換爲void*
(用於 條件),因此編譯器使用此;你看到的是 轉換運算符返回的輸出(典型地, 對象本身的std::ostream
地址,但所有 所需的是它是一個非空指針)。
相關問題
- 1. cout打印十六進制而不是十進制
- 2. C++ cout十進制對齊
- 3. 將十進制轉換爲十六進制和十六進制
- 4. C#System.OverflowException二進制到十進制和十六進制轉換
- 5. 十六進制和十進制轉換
- 6. 十六進制串&十六進制
- 7. 在C++中將十六進制十六進制字符標記爲十進制
- 8. 輸入十六進制並用C++讀取十六進制
- 9. 十六進制,八進制,二進制到十進制(C++)
- 10. 十六進制加法C++
- 11. Dec十六進制表C++?
- 12. C# - AsymmetricCipherKeyPair到十六進制
- 13. C指針位置,十進制和十六進制
- 14. 十六進制和十六進制十進制之間的區別
- 15. 從十六進制到十進制,二進制到十進制和八進制到十進制程序C++
- 16. C#和SQL十六進制VARBINARY
- 17. 十六進制
- 18. 十六進制
- 19. 十六進制
- 20. lastindexof()和十六進制0x1A
- 21. MaskedTextBox和十六進制
- 22. SUBSTRING()和十六進制值
- 23. 十六進制和算法
- 24. 十六進制和概率
- 25. 將十六進制轉換爲二進制到十六進制?
- 26. 在C +/C++中查找十六進制範圍內的十六進制數字
- 27. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 28. PHP十六進制和二進制
- 29. C++中整數的十進制,八進制和十六進制表示法
- 30. 十六進制爲二進制和十進制在matlab中
也許你正在得到'cout'的指針值,然後是「你好!」 – IllusiveBrian