如果您有一個整型t1和一個函數通過引用獲得可能較小的整型t2,調用函數((t2)var_t1)會有問題嗎?通過引用傳遞的整型類型
回答
當且僅當該功能拿了const引用,在這種情況下,由投產生的t2
臨時可以綁定到這將是罰款,強制轉換爲t2
。
既然這樣會導致整數類型的引用的目的,我會假定引用是非常量的,所以答案是:是的,這是有問題的。要清楚的是,如果您投射到t2
,它甚至不會編譯。
如果你想function
修改t1
變量只有部分,在參考/指針使用reinterpret_cast
。當然,這在理論上會調用未定義的行爲。
只要記住,這種行爲的不確定性在大端平臺上不是那麼理論化,它會修改變量的錯誤部分。真正的大端平臺正在變得越來越稀少,但它們絕對不會絕跡。 – 2011-05-02 11:42:16
確實如此,但它在Big Endian上與Little Endian中的未定義一樣。但是如果目標架構是已知的,那麼結果應該是可以預測的,這就是我所說的'理論'。當然,這並沒有讓它變得更好...... – 2011-05-02 11:46:15
投射會創建一個臨時的,如果較小的類型不採用const
參考,您的代碼將不會編譯,因爲暫時不能綁定到非常量引用。
如果確實需要const
參考,那麼它會進行編譯,但是可能會導致溢出,這是將較大數據類型轉換爲較小數據類型時的常見問題。
函數將不得不採取const
引用,否則它不會編譯。
由於您還標記了問題C,在這種情況下,「通過引用」意味着使用指針,因此無法將&
運算符應用於演員表的結果。但是,你可以使用:
function((t2 [1]){ (t2)var });
注意,是有效C,但不是C++,你不應該混合C和C++代碼的原因之一......
- 1. 通過引用傳遞值類型
- 2. 通過層傳遞類型
- 3. 不通過引用傳遞簡單類型的原因?
- 4. 通過引用傳遞'值類型'參考 - 內存佔用
- 5. 通過引用傳遞自定義切片類型
- 6. 強制引用類型傳遞值(或.Clone()通過)
- 7. 在JNI中通過引用傳遞原始數據類型
- 8. 如何通過值傳遞引用類型?
- 9. 如何通過引用傳遞基元數據類型?
- 10. 通過包裝在原始類型的類中傳遞基本類型作爲通過引用
- 11. 傳遞DropDownListFor通過模型類
- 12. 通過UDP傳遞結構弱類型
- 13. 通過完整引用傳遞變量
- 14. 通過引用傳遞整數
- 15. 通過POST傳遞模型
- 16. 通過WCF服務傳遞指定的泛型類型
- 17. 如何通過傳遞類型與泛型類型返回一個類
- 18. 通過引用C++傳遞的一類整數
- 19. 哪些類型按引用傳遞,哪些類型按值傳遞?
- 20. 有沒有辦法通過應用程序doamin傳遞和使用引用類型/值類型的地址? (C#)
- 21. 通過const引用傳遞Qt類
- 22. 通過引用傳遞父級PHP類
- 23. C++通過引用傳遞類對象?
- 24. C++類只能通過引用傳遞
- 25. 通過引用傳遞類實例
- 26. 將通用類型傳遞給方法
- 27. 傳遞參數到通用類型
- 28. 如何將std :: bind作爲通用引用類型傳遞?
- 29. 如何通過類型名稱引用ascx的類型?
- 30. 通過引用傳遞與值傳遞
C++和C是不同的語言。我已經刪除了C標籤。 – 2011-05-02 14:47:57