自动对象&局部静态对象
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;依此类推。。
以上是关于自动对象&局部静态对象的主要内容,如果未能解决你的问题,请参考以下文章