自动对象&局部静态对象

Posted GGBeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动对象&局部静态对象相关的知识,希望对你有一定的参考价值。

一、关键点

对象的生命周期:程序执行过程中,该对象存在的那段时间

局部对象:形参、函数体内部定义的变量

 

二、自动对象

自动对象:只存在于块执行期间的对象

包括:局部变量、形参

 

三、局部静态对象

特点:该种局部变量的生命周期一直到程序终止

声明局部静态变量:在声明语句前加上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;依此类推。。

 

以上是关于自动对象&局部静态对象的主要内容,如果未能解决你的问题,请参考以下文章

自动对象和静态局部对象

成员变量(实例变量)&局部变量&静态变量(类变量)的区别

JavaSE知识-08(面向对象_继承&方法&final)

java中静态成员变量、实例变量、局部变量何时创建、何时销毁?

静态变量和成员变量的区别 && 成员变量和局部变量的区别

C++ - 全局静态对象和局部静态对象的构造函数调用不同?