>[info]# 生命期
生命期的**对象**是变量表示符
## **动态生命期**
对象:普通局部变量
位置:堆区(heap)
初值:不确定值(随机值)
时机:运行时(手动分配)
长短:短
- 这种生命期由程序中特定的函数调用(malloc()和free())或操作符(new和delete)来创建和释放.
- 具有动态生命期的变量驻留在内存的堆区中.
- 当用函数malloc()或操作符new为变量分配空间时,生命期开始;当用函数free()或操作符delete释放该变量的空间或程序结束时,生命期结束.
new运算符使用的一般格式为:
**new 类型[长度];**
delete运算符使用的一般格式为:
**delete[ ] 指针变量;**
## **局部生命期**
对象:普通局部变量
位置:栈区(stack)
初值:不确定值(随机值)
时机:编译时
长短:短
- 在函数内部声明的变量或者是块中声明的变量,具有局部生命期.该生命期起始于声明点,结束于作用域结束处.
- 区别: 具有局部生命期的变量肯定具有局部作用域; 而具有局部作用域的变量,若为普通局部变量,则具有局部生命期;若为静态局部变量,则具有静态生命期.
- 具有局部生命期的变量驻留在内存的栈区;若不作初始化,其值不确定.
## **静态生命区**
对象:普通全局变量、静态全局变量、静态局部变量
位置:数据区(date)
初值:相应类型的0值
时机:编译之前
长短:长
- 这种生命期与程序的运行期相同,一旦程序开始运行,这种生命期的变量就存在,当程序结束时,其生命期就结束.
- 全局变量,静态全局变量,静态局部变量,函数都具有静态生命期,驻留在内存的全局数据区或代码区.
- 静态生命期的变量,若不作显式初始化,C++编译器会自动将其初始化成(相应类型的)0.
- 介绍
- 编程设计语言
- 第一章 对C++的初步认识
- 1.2 最简单的C++程序
- 1.3 C++对C的补充
- 1.3.1 return
- 1.3.2 输入输出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定义常变量
- 1.3.5 函数原型声明
- 1.3.6 内置函数
- 1.3.7 函数重载
- 1.3.8 函数模板
- 1.3.9 有默认值的参数
- 1.3.10 作用域
- 1.3.11 const修饰指针
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 变量
- 1.3.15 字符串变量
- 第二章 类与对象
- 2.2 类的声明和对象的定义
- 2.3 类的成员函数
- 第三章 关于类和对象的进一步讨论
- 3.1 构造函数
- 3.1.1 对象的初始化
- 3.1.2 构造函数
- 3.2 析构函数
- 3.3调用析构函数和构造函数的顺序
- 3.4 对象数组
- 3.5 对象指针
- 3.6 共享数据的保护
- 3.7 对象的建立与释放
- 3.8 对象的赋值与复制
- 3.9 静态成员
- 3.10 友元
- 3.11 类模板
- 第四章 运算符重载
- 数据类型转换
- 运算符重载
- 重载流插入运算符和流提取运算符
- 第五章 继承与派生
- 继承与派生
- 第六章 多态性与虚函数
- 多态性
- 虚函数
- 纯虚函数与抽象类