构造与析构 · 对象的生命周期
进入
{ }
自动构造(顺序 a → b → c) · 离开
{ }
自动析构(逆序 c → b → a,后建先毁)
代码块(一个作用域)
int main()
{
Widget a;
Widget b;
Widget c;
// ... 使用 a, b, c ...
}
← 离开作用域
构造
析构
内存中的对象(栈)
越晚构造的越在顶上 · 析构从顶上开始
栈底
a
对象 a 已构造
Widget() 已运行 ✓
b
对象 b 已构造
Widget() 已运行 ✓
c
对象 c 已构造
Widget() 已运行 ✓
◂ 栈顶
▶ 重播