本文主要記錄的C++中static的一些內容,內容簡單,僅僅作為梳理一下知識,如有錯誤請留言指出。
總的來說,static控制了變量和函數的使用范圍(本地數據化和代碼范圍的控制)
static全局變量和普通全局變量的區別
全局變量和靜態全局變量都是靜態存儲方式。區別在於:非靜態全局變量的作用域是整個源程序,當一個源程序有多個源文件組成時,非靜態的全局變量在各個源文件都有效,而靜態全局變量則限制了作用域,只定義了該靜態全局變量的源文件有效,同一源程序的其他源文件不能使用它,使用靜態全局變量可以避免在其他源文件中引起錯誤。
綜上:把局部變量改成靜態變量改變了它的存儲方式,及改變了它的生存期,把全局變量改為靜態變量,改變了它的作用域,限制了它的使用范圍。
C++類的靜態數據和方法成員
類中的靜態成員和方法不屬於類的實例,而屬於類本身並在所有類的實例間共享。調用這些時,應用類名::來引用。
#include <iostream>
using namespace std;
class Widget
{
public:
Widget()
{
++count;
}
~Widget()
{
--count;
}
static int num()//靜態成員函數
{
return count;
}
private:
static int count;//靜態私有數據成員
};
int Widget::count = 0;//
int main()
{
Widget x,y;
cout<<"The num is:"<<Widget::num()<<endl;
if(Widget::num()>1)
{
Widget x,y,z;
cout<<"The num is:"<<Widget::num()<<endl;
}
Widget z;
cout<<"The num is:"<<Widget::num()<<endl;
cout << "Hello World!" << endl;
return 0;
}