一,區別
- 是否需要初始化
- 指標不需要初始化,但是最好初始化
- 引用必須初始化,不能初始化為空物件,初始化後不能改變
- 是否允許為空
- 指標允許
- 引用不允許
- 是否直接操作物件
- 指標透過某個指標變數指向一個物件,對所指向的物件進行間接操作
- 引用是目標物件的別名,對引用的操作就是直接對目標物件操作
- 是否是物件
指標是物件,指標是有地址的,可以定義指標的指標
引用不是物件,欸有實際地址,不能定義引用指標,也不能定義引用的引用
二,作用
- 引用的作用
- 傳參,避免記憶體分配,以及物件資料的複製
- 函式返回值,避免物件資料的複製
- 指標的作用
- 傳參,避免物件資料複製
- 多型(基類指標指向子類)
- 程式碼複用(不用程式碼模組呼叫同一個物件)