在C++中,static
關鍵字有以下幾種作用:
void func() {
static int count = 0; // 靜態(tài)變量
count++;
cout << count << endl;
}
int main() {
func(); // 輸出 1
func(); // 輸出 2
return 0;
}
class MyClass {
public:
static void staticFunc() { // 靜態(tài)函數(shù)
staticVar = 10; // 可以訪問靜態(tài)成員變量
//nonStaticVar = 20; // 無法訪問非靜態(tài)成員變量
}
static int staticVar; // 靜態(tài)成員變量
private:
int nonStaticVar; // 非靜態(tài)成員變量
};
int MyClass::staticVar = 0; // 初始化靜態(tài)成員變量
int main() {
MyClass::staticFunc(); // 調(diào)用靜態(tài)函數(shù)
cout << MyClass::staticVar << endl; // 輸出 10
return 0;
}
class MyClass {
public:
static int staticVar; // 靜態(tài)成員變量
};
int MyClass::staticVar = 0; // 初始化靜態(tài)成員變量
int main() {
MyClass obj1;
MyClass obj2;
obj1.staticVar = 10; // 通過對象訪問靜態(tài)成員變量
cout << obj2.staticVar << endl; // 輸出 10
cout << MyClass::staticVar << endl; // 輸出 10
return 0;
}
總結(jié)來說,static
關鍵字可以用于創(chuàng)建靜態(tài)變量、靜態(tài)函數(shù)和靜態(tài)成員變量。靜態(tài)變量在函數(shù)內(nèi)部只初始化一次,并且保留其值;靜態(tài)函數(shù)只能訪問靜態(tài)成員變量和其他靜態(tài)函數(shù),不依賴于對象的創(chuàng)建;靜態(tài)成員變量在類的所有對象之間共享。