為什么使用靜態_CAST<int>(X)而不是(Int)x?我聽說static_cast功能應優先于C型或簡單功能型鑄造.這是真的嗎?為什么?
3 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
總之:
static_cast<>()
給你一個編譯時間檢查能力,C風格的轉換沒有.
static_cast<>()
在C+源代碼中的任何地方都可以很容易地發現;相反,C_樣式的強制轉換更難識別。 使用C+強制轉換可以更好地表達意圖。 更多解釋:
靜態強制轉換在 兼容類型..它類似于C型演員,但限制性更強。例如,C樣式的強制轉換將允許一個整數指針指向一個字符. char c = 10; // 1 byteint *p = (int*)&c; // 4 bytes
由于這將導致一個指向1字節分配內存的4字節指針,因此向該指針寫入將導致運行時錯誤或覆蓋一些相鄰內存。 *p = 5; // run-time error: stack corruption
與C樣式的強制轉換不同,靜態強制轉換將允許編譯器檢查指針和切入點數據類型是否兼容,這允許程序員在編譯期間捕獲這個不正確的指針分配。 int *q = static_cast<int*>(&c); // compile-time error
- 3 回答
- 0 關注
- 1504 瀏覽
添加回答
舉報
0/150
提交
取消