看板 C_and_CPP 關於我們 聯絡資訊
網站上寫的possible implementation是 template< class T > T* addressof(T& arg) { return reinterpret_cast<T*>( &const_cast<char&>( reinterpret_cast<const volatile char&>(arg))); } 請問各位 要是我 也只會寫出最外層轉型 他多那兩次轉型,有什麼目的或是為了可攜性嗎? 因為我想不透只寫最外層的轉型會有什麼問題 ,難道會再某些情況出問題? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.12.163.223 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1451473303.A.635.html
LPH66: 你看到的地方下幾行有個連結到這裡 12/30 19:33
LPH66: 這個回答往下數幾個到 http://stackoverflow.com/a/6494964 12/30 19:34
LPH66: 以及這個問題本身即是你所想要的原因 12/30 19:35
LPH66: 簡答: 這是為了閃過有哪個怪胎去 overload operator & 12/30 19:35
LPH66: 解法是利用 reinterpret_cast 的定義將這參考硬轉成 char& 12/30 19:37
LPH66: const volatile 是為了當你原來的東西有 const volatile 12/30 19:37
LPH66: 時所用的, 不然不給你轉; 之後再用 const_cast 拿掉它們 12/30 19:38