[問題] 為何要使用Static cast

看板C_and_CPP作者 (猴仔)時間14年前 (2011/11/17 19:37), 編輯推噓2(208)
留言10則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 面試的時候被問到的問題: 為什麼要用static cast 以一個繼承的class來說 ex. class Base { .... } class Derived: public Base { .... } 若 Base *a = new Derived(); 想把a轉型回derived的類型 想請問 平常也是可以直接強轉 ex. (Derived*)a; 但為什麼要用static_cast呢? 我是覺得 可能會有轉型失敗的問題 但static_cast也是會有轉型失敗的問題 而且他不會檢查 此時用dynamic_cast比較好 至少會檢查是否為同一個class 那強轉和使用 static_cast / dynamic_cast的差異在?? thx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.16.15

11/17 21:34, , 1F
(∩_∩)請參考文章 #1451IM68
11/17 21:34, 1F

11/17 21:47, , 2F
程式碼比較長比較帥
11/17 21:47, 2F

11/17 22:16, , 3F
看起來比較厲害, 不懂的人會覺得你很強
11/17 22:16, 3F

11/17 23:08, , 4F
因為可以讓人家知道你知道 cast 還有很多種~
11/17 23:08, 4F

11/17 23:50, , 5F
c style cast不管正不正確都硬轉
11/17 23:50, 5F

11/17 23:50, , 6F
static cast 可能正確才可以轉
11/17 23:50, 6F

11/17 23:51, , 7F
dynamic完全正確才能轉
11/17 23:51, 7F

11/17 23:55, , 8F
dynamic cast需要在執行時檢查class效能比較差
11/17 23:55, 8F

11/17 23:55, , 9F
如果在寫程式的時候就能確定可以轉那用static就夠了
11/17 23:55, 9F

11/18 09:24, , 10F
想問大家 那為什麼會有強轉失敗的情況發生呢??
11/18 09:24, 10F
文章代碼(AID): #1EnF7q0Y (C_and_CPP)