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