自動對象&局部靜態對象
阿新 • • 發佈:2017-10-12
i++ log static 初始 補充 關鍵字 ostream 函數 class
一、關鍵點
對象的生命周期:程序執行過程中,該對象存在的那段時間
局部對象:形參、函數體內部定義的變量
二、自動對象
自動對象:只存在於塊執行期間的對象
包括:局部變量、形參
三、局部靜態對象
特點:該種局部變量的生命周期一直到程序終止
聲明局部靜態變量:在聲明語句前加上static關鍵字
補充:內置類型的局部靜態變量的默認初始值為0
【例子】
#include <iostream> #include <vector> #include <cctype> #include <iterator> #include <stdexcept> #include <string> #include <cstring> using std::cin; using std::cout; using std::endl; using std::vector; using std::string; using std::runtime_error; int coco() { static int x = 0; x++; return x; } int main() { for (int i = 1; i <= 10; i++) cout << coco() << endl; //依次輸出1 2 3 4 ... 10 return 0; }
解釋:第一次調用coco()函數時,其中的局部靜態變量x先被初始化為0,再進行自加變為1,所以第一次調用返回值為1;而第二次調用時,x的值已經存在且等於函數上一次退出時的x的值,也就是1,然後不再定義x(也就不初始化為0),再進行自加變為2,於是第二次調用返回值為2;依此類推。。
自動對象&局部靜態對象