1. 程式人生 > >自動對象&局部靜態對象

自動對象&局部靜態對象

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;依此類推。。

自動對象&局部靜態對象