1. 程式人生 > >static與const的作用

static與const的作用

static關鍵字的作用:

1、在類中的一個成員變數是static時,該變數被所有該類的例項物件所共同擁有,它的改變對該類的例項物件是可見的,也就是說它不屬於某個特定的物件,而是屬於這個類;

2、類中的靜態成員函式不屬於某個物件,而是屬於整個類,不接受this指標,只能訪問static成員變數。

3、在一個函式中定義一個static變數,則該函式就有了狀態。該變數只在函式第一次呼叫時初始化,以後再呼叫使用上一次呼叫結束後該static變數的值。該變數儲存在記憶體的靜態資料區,具有靜態生存期,函式呼叫結束後,static變數不消亡,而是記錄下這次呼叫結束後函式的狀態。

4、在模組內的static函式只可被這一模組內的其它函式呼叫,這個函式的使用範圍被限制在宣告它的模組內;

5、全域性變數加上static關鍵,可以將其作用域由全域性作用域改為檔案作用域,它只在定義它的模組中可見。



const關鍵字的作用:
1、當不希望一個變數被改變時,可以加上const關鍵字,const變數定義時需要初始化。
2、可以給指標加上const,可以是頂層const,也可以是底層const。
3、可以在類的成員函式後面加const表示它是一個常量函式,不會改變成員變數的值,只有讀取功能。
4、可以給函式的返回型別加上const關鍵字,使返回值不能作為左值。例如:
const classA operator*(const classA& a1,const classA& a2);   
operator*的返回結果必須是一個const物件。如果不是,這樣的變態程式碼也不會編譯出錯:   
classA a, b, c;   
(a * b) = c; // 對a*b的結果賦值   
操作(a * b) = c顯然不符合程式設計者的初衷,也沒有任何意義。
5、在一個函式宣告中,const可以修飾形參,表明它是一個輸入引數,在函式內部不能改變其值;