const 標識符 在c++中作為常量修飾符 用來修飾 函數 變數 指針 const 修飾的變數不可以改變值 const 在修飾指針的時候 const 標識符出現在*的左邊表示 指向的變數為常量不能通過指針去改變該對象的值 叫做常量指針即const int a = 0; const int* ipt ...
const 標識符 在c++中作為常量修飾符 用來修飾 函數 變數 指針
const 修飾的變數不可以改變值
const 在修飾指針的時候
const 標識符出現在*的左邊表示 指向的變數為常量不能通過指針去改變該對象的值 叫做常量指針
即
const int a = 0;
const int* iptr = &a;
指針iptr可以改變但是不能對a的值進行改變
即
const int b =2;
iptr =&b;
可以運行通過但是
*iptr = 3;
該操作不允許執行;
註意:const* point 可以指向非const修飾的變數,但是任然不可以修改變數的值 而且 不可以賦值給 非常量指針
const 標識符 出現在指針的右邊表示該指針為常量不可修改和重新賦值以及進行其他相關操作指針常量
即
int a = 0;
int * const ptr = &a 。
指針常量prt 不可以修改其值但可以修改其指向內容的值。
在const 修飾類成員變數的聲明之後要在類的初始化列表裡初始化 ,但是在const聲明的變數是編譯器內置類型時,可以在聲明時初始化
而且在編譯時期是不會分配記憶體空間去存儲內置變數的。而是直接進行替換但是只針對內置類型 其他用戶自定義類型不支持。
const在修飾函數的時候分為兩種情況
一個是在返回值上為const 即
const int func () { }
類型這種是指不能修改返回值使用較少一般用於進行操作符。
另外一種是在函數聲明後添加但函數只能是類的成員函數才行全局函數不允許 即
int func()const { }
指的是在函數而裡面不能對類的成員變數進行修改和重新賦值,但操作函數可以修改和賦值非類成員變數。
在const 修飾對象時 修飾的對象只能調用類的常函數不能調用非常函數。
註意在類的常函數中 this指針即為指針常量也為常量指針 即
const T *const this
不能修改this指針指向的變數成員和修改this指針的指向
在mutable標識符聲明的變數可以在常函數中改變值進行賦值操作
const_cast 可以解除const限制
在const修飾的全局變數分配記憶體在靜態存儲區