一兽间,面向過程的static
-
函數(shù)中的靜態(tài)變量
當(dāng)變量聲明為static時售躁,空間將在程序的生命周期內(nèi)分配。即使多次調(diào)用該函數(shù)墨微,靜態(tài)變量的空間也只分配一次道媚,前一次調(diào)用中的變量值通過下一次函數(shù)調(diào)用傳遞。這對于在C / C ++或需要存儲先前函數(shù)狀態(tài)的任何其他應(yīng)用程序非常有用。
#include <iostream>
#include <string>
using namespace std;
void demo()
{
static int count = 0; // 靜態(tài)變量
cout << count << " ";
count++;
}
int main()
{
for (int i=0; i<5; i++)
demo();
return 0;
}
輸出:
0 1 2 3 4
二最域,面向?qū)ο蟮膕tatic
-
類中的靜態(tài)變量
? 聲明為static的變量只被初始化一次谴分,因為它們在單獨的靜態(tài)存儲中分配了空間,因此類中的靜態(tài)變量由對象共享镀脂。對于不同的對象牺蹄,不能有相同靜態(tài)變量的多個副本。也是因為這個原因薄翅,靜態(tài)變量不能使用構(gòu)造函數(shù)初始化钞馁。
? 注意:類中的靜態(tài)成員變量必須在類內(nèi)聲明,在類外定義(被const修飾的除外).
class Apple
{
public:
static int i; // 類內(nèi)聲明
Apple()
{
// Do nothing
};
};
int Apple::i = 1; // 類內(nèi)定義
class Apple
{
public:
// 被const修飾的static變量在c++11中可以在類內(nèi)被直接初始化匿刮。
static const int i=10;
Apple()
{
// Do nothing
};
};
類中的靜態(tài)成員函數(shù)
? 靜態(tài)成員函數(shù)也不依賴于類的對象。我們被允許使用對象和'.'來調(diào)用靜態(tài)成員函數(shù)探颈。但建議使用類名和范圍解析運算符調(diào)用靜態(tài)成員熟丸。
? 靜態(tài)成員函數(shù)僅能訪問靜態(tài)數(shù)據(jù)成員或其他靜態(tài)成員函數(shù),它們無法訪問類的非靜態(tài)數(shù)據(jù)成員或成員函數(shù)伪节。靜態(tài)類
? 和變量一樣光羞,靜態(tài)類的生命周期直到程序的結(jié)束。在main結(jié)束后才會調(diào)用靜態(tài)類的析構(gòu)函數(shù)怀大。