对象的生存期可以分为静态生存期和动态生存期两种。
一、静态生存期
1、如果对象的生存期与程序的运行期相同,称它具有静态生存期。
2、在文件作用域中声明的对象都是具有静态生存期的;在函数内部的局部作用域中声明具有静态生存期的对象,要使用关键字static。
3、局部作用域中静态变量的特点是,它并不会随着每次函数调用而产生一个副本,也不会随着函数返回而失效,该变量会在各次调用间共享。
4、定义时未指定初值的基本类型静态生存期变量,会被以0值初始化;对于动态生存期变量,不指定初值意味着初值不确定。
二、动态生存期
1、除了以上在静态生存期中出现的两种情况,其余的对象都具有动态生存期。
2、局部生存期对象诞生于声明点,结束于声明所在的块执行完毕之时。
3、不用static修饰的成员对象,其生存期都与它们所属对象的生存期保持一致。