1. 程式人生 > >第七節, 靜態成員變數和靜態成員函式

第七節, 靜態成員變數和靜態成員函式

 用static修飾的成員變數和成員函式叫做靜態成員變數和靜態成員函式。

下面我們看靜態成員變數和靜態成員函式有什麼不同的地方。

首先看下面一個例子:

class Cat
{
    int age;
public:
    static int manyCounts;
    void setAge(int aAge)
    {
        age = aAge;
        manyCounts++;
    };
    static int getCounts()
    {
        return manyCounts;
    };
};

//初始化靜態成員變數
int Cat::manyCounts = 0;

int main(int argc, const char * argv[])
{
    Cat * cat = new Cat;
    cat->setAge(55);
   int count = Cat::getCounts();
    std::cout<<"數量:"<<count;
    return 0;
}
這個例子中聲明瞭靜態成員變數manyCounts和靜態成員函式getCounts().

首先我們應該明白,靜態成員變數儲存在全域性區,實在編譯的時候申請的儲存空間,其他非靜態一般是在執行時獲取儲存空間,這一點至關重要,必須得理解。

接下來我們看靜態成員變數的初始化方式,宣告型別,並且在呼叫靜態成員變數的時候,必須用類名去呼叫,而且中間不再是“.”,“->”而是“::”.

呼叫靜態成員函式也和呼叫靜態成員變數差不多,形式“類名::靜態函式名”。