標籤:mutable static 無法建立 不能 結束 ati 關鍵字 調用 類對象
一、const
在C++中:
1、常對象:建立對象時添加const關鍵字,這個對象就不可以再修改,就有了常屬性,就意味著整個對象所有變數不能更改
2、常對象不能調用普通函數,調用成員函數就相當於把對象的this指標給了他,就有被修改的風險
3、常對象只能調用常函數(函數體前加關鍵字叫常函數),普通對象也能調用常函數,常函數就相當於對this指標添加了const屬性
4、常函數與普通函數可以構成重載,不會衝突
5、如果有成員確實需要修改,他又被const修飾,可以對成員添加一個關鍵字mutable,這樣即使是常對象調用了常函數依然可以修改成員
C:
const :常量,為變數儲存添加一種保護,保護變數不能被顯示修改,提高程式的安全性,當程式沒必要修改參數值時,應該加const屬性;
const 可以定義常量,const修改初始化過的全域變數就是常量;
二、static
C++:靜態成員與靜態成員函數
1、類成員被static修飾,就會儲存在bss段(此段是由編譯器存放的而且大小是固定的),在程式中動態建立對象時它的靜態成員就無法建立,所有的類對象就共用一個靜態成員
2、靜態成員只能在類中聲明不能在類中定義(必須在類外定義) 類型 類名::靜態成員名
3、靜態成員就是聲明在類中的全域變數,在任何位置都可以使用 類名::靜態成員名 進行訪問
4、靜態成員函數:類中的成員函數被static修飾後就變成靜態成員函數,所有成員共用一份靜態成員函數
5、靜態成員函數不會傳遞this指標,不通過對象也能調用靜態成員函數 類名::靜態成員函數(參數)
C:
static
修飾全域變數時,範圍會從整個程式變為他所在的.c檔案內;
1、靜態局部,塊:
儲存位置會由棧改為靜態段;生命週期會改為從定義開始到程式結束;但是使用範圍不變;預設值為0;只能初始化一次;
靜態函數:
static int func(int num);
static會把外部函數變為記憶體函數,只能在他所在的.c檔案內;
static修飾全域變數和函數的好處,可以防治與其他函數,變數重名衝突
C/C++中的const ,static