標籤:static const extern 關鍵字
static1.局部變數
// 該變數生命週期不僅僅是進入該函數後,而是整個程式運行期間void foo(){static int nVar = 0;printf("var = %d\n", ++nVar);}
2.保護本地變數
static int g_nVar; // g_nVar只能在本檔案中使用,其他檔案不能通過extern訪問該變數
3.靜態成員變數
// 該變數不屬於對象,而屬於這個類class Foo{public:static int nCount;};int Foo::nCount = 0;int main(){cout << Foo::nCount << endl;return 0;}
4.靜態成員函數
// 該函數不屬於對象,而屬於這個類class Foo{public:static void ShowClassTag();};void Foo::ShowClassTag(){cout << "class Foo" << endl;}int main(){Foo::ShowClassTag();return 0;}
const1.定義常量
const int nItem = 0;const int* pnItem = &nItem;
2.保護變數不被外部使用
//file1.cconst int g_nLocalVar = 100;int g_nVar = 100;//file2.cextern const int g_nLocalVar; // 非法聲明extern int g_nVar; // 合法
extern1.聲明所引用對象已被定義
extern int g_nFoo;int main(){g_nFoo++;cout << g_nFoo << endl;return 0;}int g_nFoo = 0;
2.聲明該變數可被外部使用
// file1.cextern const int g_nItem;int main(){cout << g_nItem << endl;return 0;}// file2.c// 如果此處不加extern,該變數不能被外部存取的extern const int g_nItem = 100;