本文主要記錄的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; }