C 向上向下型別轉換的安全性問題

2021-10-09 05:21:31 字數 315 閱讀 8493

向上型別轉換是指子類物件轉為父類物件,向下型別轉換是指父類物件轉換為子類物件。(父輩在上)

如果沒有發生多型(父類指標指向子類物件),那麼向下轉換是不安全的,向上轉換是安全的。

animal* anim = new animal;基類轉派生類

cat* cat = (cat*)anim;這樣是不安全的,因為cat所佔大小比animal更大,而申請空間只有animal大小,指標轉換後可能會導致越界。

如果發生多型,animal* anim = new cat; cat* cat = (cat*)anim; 本身已經申請了cat空間,那麼就不會導致越界問題。

C 向上型別轉換和向下型別轉換

有乙個毛病 遇到乙個問題,總想著以後在遇到再解決,導致乙個簡單的餓問題永遠在拖延,什麼也沒弄會。不知怎麼養成這個壞習慣,誓改之。一 向上型別轉換 所謂向上型別轉換,是指取乙個物件的位址,將其作為基類的位址處理,因為繼承樹是以基類為頂點的。此種轉換無需顯式型別轉換,正是利用這一性質從而實現了多型性。二...

c 中向上型別轉換和向下型別轉換

在c 的世界中有這樣兩個概念,向上型別轉換,向下型別轉換,分別描述的是子類向基類和基類向子類的強制型別轉換。在向上型別轉換的過程中 使用指標和引用不會造成切割,而使用直接賦值會造成切割。在向下型別轉換的過程中 使用dynamic cast進行向下強制型別轉換。使用此關鍵字有一下幾個條件 必須有虛函式...

C 中的向上型別轉換和向下型別轉換

在c 的世界中有這樣兩個概念,向上型別轉換,向下型別轉換,分別描述的是子類向基類,和基類向子類的強制型別轉換。向上強制型別轉換 切割 覆蓋方法和子類資料丟失的現象生成切割 slice cpp view plain copy class base class derived public base i...