亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么使用靜態_CAST<int>(X)而不是(Int)x?

為什么使用靜態_CAST<int>(X)而不是(Int)x?

C++
開滿天機 2019-06-20 10:40:52
為什么使用靜態_CAST<int>(X)而不是(Int)x?我聽說static_cast功能應優先于C型或簡單功能型鑄造.這是真的嗎?為什么?
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

一個實用的提示:如果您計劃整理項目,可以輕松地搜索源代碼中的StaticCAST關鍵字。


查看完整回答
反對 回復 2019-06-20
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

總之:

  1. static_cast<>()

    給你一個編譯時間檢查能力,C風格的轉換沒有.
  2. static_cast<>()

    在C+源代碼中的任何地方都可以很容易地發現;相反,C_樣式的強制轉換更難識別。
  3. 使用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

閱讀更多內容:
靜態鑄造<>與C型鑄造有什么區別?

規則型與靜態型與動態型


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 1504 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號