面試題總結——第1篇

1.對於面向對象的理解

面向對象是基於面向過程的,面向過程強調的是功能的實現,面向對象是吧功能封裝進對象,強調具備了功能的對象

eg:餐廳吃飯 吃飯<->點餐 做菜 上菜

三大特性:封裝,多態,繼承

 

2.指針和引用的區別

  1. 引用在定義時必須初始化,指針沒有要求
  2. 引用在初始化時引用一個實體後,就不能再進行引用其他實體,而指針可以在任何時候指向任何一個同類型實體
  3. 沒有NULL引用,但有NULL指針
  4. 在sizeof中含義不同:引用結果爲引用類型的大學,但指針始終是地址空間所佔字節個數
  5. 引用自加既引用實體增加1,指針自加即指針向後偏移一個類型的大小
  6. 有多級指針,但是沒有多級引用
  7. 訪問實體方式不同,指針需要顯式解引用,引用編譯器自己處理
  8. 引用比指針使用起來相對安全

 

3.new/delete和malloc/free的區別

  1. maollc/free是函數,new/delete是操作符
  2. new申請的空間可以初始化,malloc不行
  3. malloc的返回值是void*,所以需要計算空間大小並傳遞且使用時必須更改類型,new不需要
  4. malloc申請失敗返回NULL,new需要捕獲異常
  5. malloc申請的空間一定在堆上,而new不一定,因爲operator new可能會存在重載
  6. new/delete比malloc/free的效率稍微低點,因爲new/delete的底層封裝了maolloc/free
  7. malloc/free只能申請內置類型的空間,不能申請自定義類型的空間,因爲其不會調用構造與析構函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章