當我們想保留物件中的某個變數的值不釋放其記憶體,以備下次呼叫,我們最先會想到用全域性變數。但是全域性變數破壞了物件導向的封裝性,當乙個變數被定義為全域性變數的時候,他將為所有物件所使用,所以為了保證安全,引入了static object(靜態物件)。
static修飾後的物件與普通物件不同,其不同體現在生命週期以及儲存空間。
static修飾普通變數,在main()函式之前就申請了儲存空間。如果有初始值就用初始值初始化它,如果沒有初始值系統用預設值初始化它。
static
int a;
static修飾普通函式,表明函式的作用範圍,只可在該檔案內使用。
static
intfunction()
;
靜態成員引用不需要特定物件。即不需要生成物件就可以訪問該成員。但訪問前必須在類體外將其初始化。
注:普通物件在宣告物件時並不占有空間,只有在例項化物件的時候才為物件申請分配空間。
classa;
a = val;
靜態成員函式不需要物件就可以被引用,反之非靜態成員函式必須有特定物件相對。靜態成員函式只可以引用靜態成員變數。
classa;
//靜態成員函式
intfunction2()
;//非靜態成員函式
};
若是沒有相應物件就引用非靜態成員函式,報錯: C static的用法詳解
有的東西你天天在用,但未必就代表你真正了解它,正如我之前所了解的 static 一 靜態類 靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說,不能使用 new 關鍵字建立靜態類型別的變數。在宣告乙個類時使用static關鍵字,具有兩個方面的意義 首先,它防止程式設計師寫 來例項化該靜態類 其...
C Static的用法分類詳解
在全域性變數前加上關鍵字static,全域性變數就定義成乙個全域性靜態變數 記憶體中的位置 靜態儲存區,在整個程式執行期間一直存在 初始化 未經初始化的全域性靜態變數會被自動初始化為0 自動物件的值是任意的,除非他被顯式初始化 作用域 全域性靜態變數在宣告他的檔案之外是不可見的,準確地說是從定義之處...
C static關鍵字的作用
在 c語言中,static 的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加 static 字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是 a.c,另乙個是 m...