1.對於面向對象的理解
面向對象是基於面向過程的,面向過程強調的是功能的實現,面向對象是吧功能封裝進對象,強調具備了功能的對象
eg:餐廳吃飯 吃飯<->點餐 做菜 上菜
三大特性:封裝,多態,繼承
2.指針和引用的區別
- 引用在定義時必須初始化,指針沒有要求
- 引用在初始化時引用一個實體後,就不能再進行引用其他實體,而指針可以在任何時候指向任何一個同類型實體
- 沒有NULL引用,但有NULL指針
- 在sizeof中含義不同:引用結果爲引用類型的大學,但指針始終是地址空間所佔字節個數
- 引用自加既引用實體增加1,指針自加即指針向後偏移一個類型的大小
- 有多級指針,但是沒有多級引用
- 訪問實體方式不同,指針需要顯式解引用,引用編譯器自己處理
- 引用比指針使用起來相對安全
3.new/delete和malloc/free的區別
- maollc/free是函數,new/delete是操作符
- new申請的空間可以初始化,malloc不行
- malloc的返回值是void*,所以需要計算空間大小並傳遞且使用時必須更改類型,new不需要
- malloc申請失敗返回NULL,new需要捕獲異常
- malloc申請的空間一定在堆上,而new不一定,因爲operator new可能會存在重載
- new/delete比malloc/free的效率稍微低點,因爲new/delete的底層封裝了maolloc/free
- malloc/free只能申請內置類型的空間,不能申請自定義類型的空間,因爲其不會調用構造與析構函數