[英]Questions about `std::cout << &std::hex << 123 << std::endl;`
這是代碼片段:
#include <iostream>
int main()
{
std::cout << std::hex << 123 << std::endl;
std::cout << &std::hex << 123 << std::endl;
}
&std::hex
是什么? 我認為它獲取了std::hex
的地址。 地址將被打印出來。
這個代碼片段是否有任何潛在的問題,因為有人說獲取標准庫提供的 function 的地址是不好的?
function 的名稱衰減為指向該 function 的指針。因此std::cout << std::hex
使用 stream 插入器,該插入器采用指向 function 的指針,該 function 采用std::ios_base&
並返回std::ios_base&
。 stream 插入器簡單地調用 function。
Function 指針具有另一個特殊屬性:當您編寫&std::hex
時,它的計算結果為 function 的地址。與&&std::hex
、 &&&&std::hex
等相同。它們都表示同一件事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.