const 的主要用法是防止物件再次被修改。
下面總結一下const的常見使用情況
這樣這個變數在後面就不可以再被修改。
const
int val = 10;
//val = 20; //錯誤,不可被修改
如果使用引用傳遞引數或按位址傳遞引數給乙個函式,在這個函式裡這個引數的值若被修改,則函式外部傳進來的變數的值也發生改變;若想保護傳進來的變數不被修改,可以使用const保護。
void fun1(const
int &val)
void fun2(int &val)
void main()
#define pi 3.14 //使用#define巨集
const
double pi = 3.14
//使用const,這時候pi並沒有放入記憶體中。
double a = pi; //這時候才為pi分配記憶體,不過後面再有這樣的定義也不會再分配記憶體。
double b = pi; //編譯時分配記憶體
double c = pi; //不會再分配記憶體,
double d = pi; //編譯時再分配記憶體
const定義的變數,系統只為它分配一次記憶體。而使用#define定義的常量巨集,能分配好多次,這樣const就很節約空間。
class
private:
int a ;
static
int b;
}
const
int *a;//const修飾指向的物件,a可變,a指向的物件不可變
int *const a;//const修飾指標a, a不可變,a指向的物件可變
const
int *const a;//指標a和a指向的物件都不可變
修飾函式返回值,防止返回值被改變
const
int fun();//接收返回值的變數也必須加const
const
int a = fun(); //接收的變數也要是const的,int a = fun()是錯誤的
使用const修飾的變數必須初始化,在類中又不能在定義時初始化,
class
初始化const int型別(沒有static),在類的建構函式上初始化
class
test
private:
const int b;
}
初始化static const int這個型別的(帶有static的),在類的外面初始化
class
test
const
int test::c=10; //類的外部初始化c為10
const定義的物件變數只能作用於這個程式該c/c++檔案,不能被該程式的其他c/c++檔案呼叫
如file1.cpp中 const
int val;
在file2.cpp中, extern intval; //錯誤,無法呼叫,
要想const定義的物件變數能被其他檔案呼叫,定義時必須使用extern修飾為
extern
const
int val;
非const變數預設為extern,要是const能被其他檔案訪問必須顯示指定為extern
Const 使用方法總結
const 使用方法總結 const限定符的特點在於 強制最低訪問權原則。用這個原則正確的設計軟體可大大減少除錯時間和不良 並且能夠使程式易於修改和除錯。給函式傳遞的指標有如下四種情況 指向非常量資料的非常量指標 指向非常量資料的常量指標 指向常量資料的非常量指標 指向常量資料的常量指標 1 如果傳...
const使用及問題總結
最近在論壇中回答了乙個別人提出的關於const的問題,就隨著自己的理解答覆了,不久就有朋友引用貼子說我說的有問題。於是乎自己思索思索 翻翻書發現自己理解的確實有問題。好記性不如爛鍵盤,何況記性不好,為了加深理解以及以後查詢,今天就好好總結一下。定義乙個變數代表乙個常數的方法存在乙個問題 可能被有意或...
Const 與 Readonly 使用總結
在以往的開發過程中一直使用const來定義常量,很少注意到readonly的使用,因為總感覺const的使用已經足夠了。而就在這兩天,在閱讀sqlhelper的 時,再次看到了readonly的使用,而且感覺很彆扭。如果按const來說,定義了常量後,常量在使用時是不允許再次改變的。而readonl...