經典問題解析四

2022-09-11 17:39:13 字數 759 閱讀 8354

new關鍵字與malloc函式的區別

new關鍵字是c++的一部分

malloc是由c庫提供的函式

new以具體型別為單位進行記憶體分配

malloc以位元組為單位進行記憶體分配

new在申請記憶體空間時可進行初始化

malloc僅根據需要申請定量的記憶體空間

建構函式不可能成為虛函式

在建構函式執行結束後,虛函式表指標才會正確的初始化

析構函式可以成為虛函式

建議在設計類時將析構函式宣告為虛函式

建構函式中不可能發生多型行為

在建構函式執行時,虛函式表指標未被正確初始化

析構函式中不可能發生多型行為

在析構函式執行時,虛函式表指標已經被銷毀

dynamic_cast是與繼承相關的型別轉換關鍵字

dynamic_cast要求相關的類中必須有虛函式

用於有直接或者間接繼承關係的指標(引用)之間

-指標轉換成功:得到目標型別的指標

轉換失敗:得到乙個空指標

-引用轉換成功:得到目標型別的引用

轉換失敗:得到乙個異常操作資訊

編譯器會檢查dynamic_cast的使用是否正確

型別轉換的結果只可能在執行階段才能得到

小結new/delete會觸發建構函式或者析構函式的呼叫

建構函式不能成為虛函式

析構函式可以成為虛函式

建構函式和析構函式中都無法產生多型行為

dynamic_cast是與繼承相關的專用轉換關鍵字

經典問題解析

1 經典問題解析。1 const 什麼時候是常量,什麼時候是變數。2 const 常量的判斷準則。1 只有字面量初始化的 const 常量才會進入符號表,真正意義上的常量。2 使用其他變數初始化的 const 常量依舊是唯讀變數。3 被 volatile 修飾的 const 常量不會被放入到符號表 ...

第55課 經典問題解析四

1.1 new和malloc的區別 1.2 delete free的區別 new和malloc的區別 include include include for malloc free 這兩個都是函式 using namespace std class test test int main 2.1 建構...

經典問題解析三

分析 這是乙個多型與陣列物件,及指標運算子之間的問題。1 父類中佔8個位元組,乙個int型別,乙個virtual函式,所以父類輸出8個位元組。2 子類繼承了父類,同時又多個乙個int型別,所以子類佔12個位元組。3 p為父類指標,c為子類指標,p 的步長為8,c 的步長為12。4 所以,當p 後,p...