C++類中的Static關鍵字

 

靜態成員是能夠獨立訪問的,也就是說,無須建立任何對象實例就能夠訪問,而靜態成員函數可不創建對象就能夠被使用。
  或者說靜態函數與通常函數沒有太大的區別,只是訪問有限制,靜態變量跟通常的全局變量的區別就是訪問有限制。函數

static變量this

static變量不像普通的變量,static變量獨立於一切類對象處在。static修飾的變量先於對象存在,因此static修飾的變量要在類外初始化。由於static是全部對象共享的東西嘛,必需要比對象先存在的spa

 

class test
{
private:
public:
    static int i;
};
int test::i = 100;//此句包含了聲明和賦值,初始化不受private和protected訪問限制,可是如果priivate,下面main函數就沒法訪問
int main()
{
    cout << test::i << endl;
    return 0;
}

  

好處:用static修飾的成員變量在對象中是不佔內存的,由於他不是跟對象一塊兒在堆或者棧中生成,用static修飾的變量在靜態存儲區生成的,因此用static修飾一方面的好處是能夠節省對象的內存空間。因此通常類const變量通常改成static const變量,能夠節省一些空間。指針

    -靜態成員變量屬於整個類全部
    -靜態成員變量的生命期不依賴於任何對象,爲程序的生命週期
    -能夠經過類名直接訪問公有靜態成員變量
    -全部對象共享類的靜態成員變量
    -能夠經過對象名訪問公有靜態成員變量
    -靜態成員變量須要在類外單獨分配空間
    -靜態成員變量在程序內部位於全局數據區 (Type className::VarName = value)

code

static成員函數           對象

static函數也是類函數,因此在寫定義時也要寫明屬於哪一個類。與不一樣類函數不一樣的是,它沒有傳入this指針,正由於沒有this指針,因此static類成員函數不能訪問非static的類成員,只能訪問 static修飾的類成員。
  靜態成員函數不能夠同時聲明爲 virtual、const、volatile函數。
blog

類的成員函數有以下特性:    -靜態成員函數是類的一個特殊的成員函數
    -靜態成員函數屬於整個類全部,沒有this指針
    -靜態成員函數只能直接訪問靜態成員變量和靜態成員函數
    -能夠經過類名直接訪問類的公有靜態成員函數
    -能夠經過對象名訪問類的公有靜態成員函數
    -定義靜態成員函數,直接使用static關鍵字修飾便可
生命週期

      

相關文章
相關標籤/搜索