C++之局部对象(自动对象和静态局部对象)

    xiaoxiao2021-04-18  65

    1、自动对象

    默认情况下,局部变量的生命期局限于所在函数的每次执行期间。只有当定义它的函数被调用时才存在的对象称为自动对象。自动对象在每次调用函数时创建和撤销。该类型局部变量存储在栈上,在动态存储区。

    局部变量所对应的自动对象在函数控制经过变量定义语句时创建。如果在定义时提供了初始化,那么每次创建对象时,对象都会被赋予指定的初值。对于未初始化的内置类型局部变量,其初值不确定。当函数调用时,自动对象就会被撤销。

    形参也是自动对象,其所占存储空间在函数调用时被创建,在函数结束时撤销。

    2、静态局部对象

    用static关键字修饰的局部变量。静态局部变量存储在静态存储区,生命期贯穿整个程序运行期间。作用域同自动局部变量。

    静态局部对象在所处模块初次运行时进行初始化工作,且只初始化一次。如果不初始化,编译器会自动为其赋初始值为0或空字符。

    例如:

    size_t count_calls(){ static size_t ctr = 0; return ++ ctr; } int main(){ for(size_t i = 0; i != 10; i ++) cout << count_calls()<<endl; return 0; }上例会输出1到10的整数。

    转载请注明原文地址: https://ju.6miu.com/read-674571.html

    最新回复(0)