构造与析构 · 对象的生命周期

进入 { } 自动构造(顺序 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() 已运行 ✓ ◂ 栈顶