c 中static成員函式

2021-09-25 04:20:16 字數 552 閱讀 4208

1)只能訪問static成員變數,因為靜態成員函式沒有this指標,不能指向具體的物件,所以不能訪問普通的成員變數

2)在函式體內可以通過類名去呼叫static成員函式,

3)主要目的是去訪問static成員變數(雖然宣告為普通成員函式也可以,但加上static語義更明確)

static為什麼只被初始化一次?

因為static宣告的變數具有「記憶」功能,程式初始化後,一直都處於記憶體裡面,並沒有被銷毀。不需要再做其他初始化。

void fun(int i)

int main(int argc, char *ar**)

因為value被宣告為static,只會在第一次呼叫fun函式時被初始化,此時value被賦值為0,之後每次呼叫都不會再執行這句。所以value始終為0。

在.h標頭檔案中定義static變數可不可以??

不可以,容易造成資源浪費,也可能會引起程式錯誤。

如果有多個cpp檔案引用可該標頭檔案,按照編譯的順序就會在每個cpp檔案中都有乙份該static變數,會造成資源浪費或程式錯誤。

static資料成員 static成員函式

類的static資料成員的引入 不同物件之間共享訪問,本質上是對該型別所有物件,只維持乙份拷貝。與全域性變數相比,優勢 1.靜態資料成員仍然是在類域名字空間,沒用進入程式的全域性名字空間,因此不存在與程式中其他全域性名字衝突的可能。2.可以實現資訊隱藏,靜態資料成員可以是private成員,全域性變...

static成員函式和static成員

c 的靜態成員是和類關聯的,它屬於某個類,但是不屬於某個特定的物件。靜態成員變數只儲存乙份供所有物件共用。所以在所有物件中都可以共享它。使用靜態成員變數實現多個物件之間的資料共享不會破壞隱藏的原則,保證了安全性還可以節省記憶體。但是可以通過物件呼叫靜態成員函式,雖然我們一般不會這麼做 1 class...

C 中static成員變數

1 static成員變數屬於類,不屬於某個具體的物件,即使建立多個物件,也只為static成員變數分配乙個記憶體 所有物件都是這個記憶體裡的statiic變數,如果對其做出修改也會影響到其他物件的使用 2 static成員變數必須在類外進行初始化 形如 type class name value i...