溫馨提示×

c++中static的作用是什么

c++
小億
98
2023-10-12 03:05:30
欄目: 編程語言

在C++中,static關鍵字有以下幾種作用:

  1. 靜態(tài)變量:在函數(shù)內(nèi)部聲明的靜態(tài)變量在程序運行期間只被初始化一次,并且在函數(shù)運行結(jié)束后仍然保留其值,下次再調(diào)用該函數(shù)時將繼續(xù)使用上次的值。
void func() {
static int count = 0; // 靜態(tài)變量
count++;
cout << count << endl;
}
int main() {
func(); // 輸出 1
func(); // 輸出 2
return 0;
}
  1. 靜態(tài)函數(shù):靜態(tài)函數(shù)屬于類的成員函數(shù),它只能訪問類的靜態(tài)成員變量和其他靜態(tài)函數(shù),而無法訪問非靜態(tài)成員變量和非靜態(tài)函數(shù)。靜態(tài)函數(shù)不依賴于任何對象的創(chuàng)建,可以直接通過類名調(diào)用。
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;
}
  1. 靜態(tài)成員變量:靜態(tài)成員變量屬于類的成員變量,它在程序運行期間只被初始化一次,并且在類的所有對象之間共享??梢酝ㄟ^類名或?qū)ο竺麃碓L問靜態(tài)成員變量。
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)成員變量在類的所有對象之間共享。

0