##static用來控制變量的存儲方式和可見性## 函數內部定義的變量,在程序執(zhí)行到它的定義處時,編譯器為它在棧上分配空間。在函數執(zhí)行結束后,分配的空間會被立即釋放掉。如何在保障函數體內變量的私有性前提下,使該變量的值保存至下一次調用的時候呢?此static就派上了用場。當需要一個數據對象為整個類而不是某個對象服務,同時又力求不破壞的封裝性,即要求此成員隱藏在成員的內部,對外不可見。 要想深入了解static的機制,就要理解靜態(tài)與非靜態(tài)變量:靜態(tài)的成員存在于內存,非靜態(tài)成員需要實例化才會分配內存。所有沒有加static的成員都是非靜態(tài)成員。話不多說,先上程序實例幫助理解:
#include<iostream>using namespace std;//含有靜態(tài)變量的函數int func_1(void) { static int static_para=0; //上面這句話在func_1第i次調用不再被執(zhí)行(i>1) static_para++; return static_para;}//不含有靜態(tài)變量的函數int func_2(void) { int no_static_para = 0; no_static_para++; return no_static_para;}int main() { int i, j; cout << "非靜態(tài)" << " " << "靜態(tài)" << endl; //設置循環(huán),連續(xù)調用兩個函數10次 for (int k = 0; k < 10; k++) { j = func_1(); i = func_2(); cout <<i<<" "<<j<<endl; } return 0;}程序運行的結果:

新聞熱點
疑難解答