3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

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