认清能力缺口:你真的懂对象的生与死吗

很多写 C++ 的人,能熟练使用指针和容器,甚至能写出复杂的模板,但一遇到类的设计就频频翻车。这门课的主题非常聚焦,专门解决对象的生命周期管理问题。如果你在写类时,总是依赖编译器默认生成的构造函数;遇到带有 const 修饰的成员变量,不知道为什么不能在构造函数体内赋值,只能对着编译报错发呆;或者搞不清 static 成员变量到底该在哪里初始化,那说明你的基础有漏洞。这门课适合已经掌握 C++ 基础语法、能写出简单类定义,但对对象初始化时机和资源释放逻辑缺乏系统认知的学习者。如果你连基本的类成员访问控制都不熟悉,建议先去补完面向对象的基础再来。这里不谈虚函数表,不谈设计模式,只死磕对象怎么被正确地建出来、怎么被安全地销毁。

学习顺序与配套练习:别光看,敲坏几次才有感觉

资料编排是按实例递进的,建议严格按顺序看,不要跳跃。第一遍先过默认构造与析构,把对象生灭的骨架定下来。接着重点啃 const 成员和 static 成员的构造这两块,这是区分新手和老手的关键分水岭。看视频时手边必须开着编译器,每个实例都要逐字敲一遍。资料里的代码是用来对照的,不是用来背诵的。练习方法很简单:故意写错。比如把 const 成员的初始化挪到构造函数的大括号里,看看编译器报什么错;把 static 成员写在类内直接赋值,看能不能过编译。改坏一次的印象比看对十次更深。最后看析构总结时,结合前面的实例,自己画一张对象从诞生到销毁的调用顺序图,确认每个节点对应哪段代码。

学完产出:能独立解决哪些实际问题

看完这门课,你应该能独立设计出带资源管理的类。具体来说,当你的类里包含动态分配的内存或系统句柄时,你能清楚地知道该在哪个重载构造函数里申请资源,在析构函数里按什么顺序释放。你需要能回答这几个问题:const 成员为什么必须在初始化列表里给值?static 成员的构造跟普通成员有什么本质不同?多个重载构造函数同时存在时,编译器根据什么规则做决议?如果这些问题答不上来,就回去重看对应实例,别往下走。查漏补缺的核心就是缺什么补什么,别假装全会。

课程目录

1-1 [构造与析构] 本部分视频介绍 (12:26)
1-2 [构造与析构] 实例01-默认构造函数与析构函数 (16:02)
1-3 [构造与析构] 实例02-构造函数 (24:27)
1-4 [构造与析构] 实例03-析构函数 (23:14)
1-5 [构造与析构] 实例04-构造函数与重载 (06:43)
1-6 [构造与析构] 实例05-const成员的构造 (10:57)
1-7 [构造与析构] 实例06-static成员的构造 (14:45)
1-8 [构造与析构] 析构总结 (13:35)