1. 程式人生 > >const T、const T*、T *const、const T&、const T*& 的區別

const T、const T*、T *const、const T&、const T*& 的區別

這些個型別的組合有多種變化,容易產生混淆,這裡的T指資料型別,在這裡來分析一下這些不同組合的情況和含義。由於本人才疏學淺,不足之處,還請多多指教,大家共同探討和學習。

  • const T 

所修飾變數的內容不能被修改

  • const T*

所修飾的變數是個指標,這個指標的指向不能被修改;要修改變數的內容,不能夠改變指標指向,但可以通過解引用的方式直接賦值

  • T *const

所修飾的變數是個指標,這個指標的內容不能被修改;要修改變數的內容,不能夠改變指標的內容,但可以通過改變指標指向來修改

  • T& 、const T&

引用、常引用,常引用一旦指向一個實體,就不能再被指向其它實體

  1. 常引用可以被變數或者引用初始化
  2. 引用不能被常量或者常引用初始化,但變數可以被常引用初始化
  • const T*& 、T*const&

指向常量物件的指標的引用,這可以分兩步來理解:

  1. const T*是指向常量的指標;
  2. const T*&指向常量的指標的引用

const T*& 、T*const&相同點:

  • 都是對指標的引用

const T*& 、T*const&不同點:

  • 這個與const T*、T*const類似,只是分別多了個引用和常引用
  • 要修改const T* &所修飾變數的值,因為const T*是個常量指標,所以不能夠通過解引用方式直接賦值;但是可以改變引用的物件,原來引用的物件是const T*
  • 要修改T* const &所修飾變數的值,因為這個引用是常引用,所以引用的物件無法改變;但可以通過解引用的方式對其進行賦值