c++面試之static與const的作用
一、static的作用
(1)在函式體內,靜態變數具有“記憶”功能,一個被宣告為靜態的變數在這一函式被呼叫的過程中,其值維持不變;
(2)函式體外,模組內,它的作用範圍是有限制的:
- 靜態變數:該變數可以被模組內所有函式訪問,但不能被模組外其他函式訪問,是一個本地的全域性變數;
- 靜態函式:作用域與普通函式不同,它的作用域僅限於本檔案中,只能被這一模組的其他函式呼叫,不能被模組外的其他函式呼叫。
static全域性變數與普通的全域性變數的區別:static全域性變數只初始化一次,目的是防止在其他檔案中被引用。
static區域性變數與普通的區域性變數的區別:static只被初始化一次,下一次運算是上一次的結果。
static()函式與普通函式的區別:作用域不同,static()函式只在一個原始檔重要有效,不能被其他原始檔使用
類中的靜態資料成員的特點:
(1)無論類的物件定義多少個,靜態資料成員在類中只有一份複製品;
(2)靜態資料成員儲存在全域性資料區,定義時,需分配空間;
(3)靜態成員變數初始化是在類外;
靜態成員函式不具有this指標,無法訪問屬於類物件的非靜態資料成員,也無法訪問非靜態成員函式,只能呼叫其餘的靜態資料成員函式。
二、const的作用
- 定義const常量,具有不可變性;
- 進行型別檢查
- 方便進行引數調整和修改
- 保護被修飾的東西,防止被意外更改
- 為函式過載提供參考
- 節省空間,避免不必要的記憶體分配