static用法總結

1、 static局部變量

函數第一次賦值之後,會一直保存這個值,並且只初始化一次

void func()
{
    static int i = 0;
    i++;
}

2、 static全局變量
未經初始化的全局靜態變量將被自動初始化爲0,限定作用域爲文件內從定義之處開始到文件結尾(非靜態全局變量在整個源程序內有效)

static int i;    //默認初始化爲0

3、 static修飾函數
靜態函數與普通函數的區別,只能在聲明它的地方可見,不能被其它文件所使用

static void func();

總結:
若全局變量僅在單個文件中可用,則聲明爲static全局變量,若全局變量僅在單個函數內部可用,則聲明爲static局部變量。

4、 static成員變量

  • 靜態成員可供所有的對象訪問,只分配一次內存,也只有一份拷貝,對於每個對象都是一樣,它的值可以更新;

  • 靜態成員存儲在全局數據區,因此不能類聲明中定義,初始化規則:<數據類型><類名>::<靜態數據成員名>=<值> ,在使用前必須初始化;

  • 訪問:通過對象或者類名來訪問;

5、 static成員函數

  • 與靜態成員類似,它是類內部共同享用,和普通成員函數不同,靜態成員函數沒有this指針;

  • 訪問:與靜態成員類似通過類名或對象;

  • 非靜態成員函數可以任意地訪問靜態成員函數和靜態數據成員,但反過來不行;

  • 靜態成員之間可以相互訪問,包括靜態成員函數訪問靜態數據成員和訪問靜態成員函數;

class test{
public:
    test(){}
    ~test(){}
public:
    //靜態成員函數
    static int get(){
        return m_Count;
    }
private:
    //靜態數據成員
    static int m_Count;
};
int test::m_Count = 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章