關於static靜態變量的幾個問題

1、C語言中的關鍵字static和C++中的關鍵字static有什麼區別

在C中static用來修飾局部靜態變量和外部靜態變量、函數。而C++中除了上述功能外,還可以用來定義類的成員變量和函數,即靜態成員和靜態成員函數。

2、static變量的作用

1)static變量有2個特性,全局性和記憶性

2)在函數體內,一個被聲明爲靜態的變量在這一函數被調用的過程中其值維持不變

3)在模塊內(但在函數體外),它的作用域爲該模塊內的所有函數,它不能被模塊外的其他函數訪問。它是一個本地的全局變量。

4)內部函數應該在當前源文件中說明,對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,使用這些函數的源文件要包含這個頭文件。

4、C++中static數據成員的特點

1)對於非靜態數據成員,每個對象都有自己的複製品,而靜態數據成員被當做類的成員,無論有多少個對象,都只有一份複製品,由該類的所有對象所共享

2)靜態數據成員存儲在全局數據區,定義時需要分配空間,所以不能再聲明中定義。

3)靜態數據成員和普通數據成員一樣遵從pulic、protected、private訪問規則

4)static成員變量初始化在類外,此時不能帶上static的關鍵字。protected和private的static變量雖然在類外初始化,但是不能再類外被訪問

5、全局變量和static變量的區別

1)靜態數據成員只能在本文件中被訪問,文件外不可以,但是全局變量在別的文件中也可以使用

2)static變量可以加上protected和private修飾,隱藏信息,而全局變量不行

6、static變量只能被初始化一次,而且不能再頭文件中定義static變量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章