别把“会用类”当成“懂设计”

很多 C++ 开发者卡在初中级,不是因为语法不熟,而是因为代码写得越来越难维护。阶段一聚焦面向对象在工程实战中的落地,解决“代码能跑但是一团乱麻”的问题;阶段二深入设计模式,重点讲单例、工厂、Builder 等创建型模式的实现陷阱与适用场景。这门课不教基础语法,专门补齐从“写对代码”到“写好代码”的能力缺口。适合有一定 C++ 基础、但缺乏大型项目重构经验的工程师,以及准备面试中高级工程师岗位的学习者。

建议先看这两块,再动手练

先攻克单例模式的多节内容,这是面试高频考点,也是实际项目中用得最多的模式之一。视频里详细拆解了线程安全、内存泄漏等实现坑点,配合日志和全局配置类的示例,能帮你建立正确的单例使用直觉。接着看抽象工厂和 Builder 模式,理解它们在对象创建复杂场景下的权衡。看完这几节,你应该能独立回答:为什么不用全局变量而用单例?不同线程模型下单例怎么实现?什么情况下选工厂方法而不是抽象工厂?配套练习务必亲手写一遍代码,不要只看视频,否则印象会随时间快速消退。

学完能做什么,资料怎么用

学完前八周内容后,你应能独立评估现有代码的设计缺陷,识别反模式,并在重构时运用创建型模式降低耦合。资料包中的实例代码是练习的核心,建议边看视频边对照修改参数,观察不同实现方式的行为差异。对于单例模式的三种经典坑点,一定要自己复现并修复,这是区分“知道”和“会用”的分水岭。设计原则部分则作为贯穿始终的指导思想,帮助你在面对复杂需求时做出合理的选择,而非死记硬背模式结构。

课程目录

阶段二:C++面向对象设计模式精讲
01 1-1 面向对象设计模式的定义,什么时候该使用设计模式 最近学习.mp4 32.94M
02 1-2 一个实例说明设计模式的本质1 .mp4 24.19M
03 1-3 一个实例说明设计模式的本质2 .mp4 134.25M
04 1-4 面向对象设计模式的分类和设计原则1 .mp4 43.00M
05 1-5 面向对象设计模式的分类和设计原则2 .mp4 78.98M
06 1-6 除了面向对象设计模式,还有什么模式 .mp4 31.86M
07 1-7 反模式1 .mp4 46.96M
08 1-8 反模式2 .mp4 81.80M
09 1-9 单例模式及单例模式实现的坑1 .mp4 48.20M
10 1-10 单例模式及单例模式实现的坑2 .mp4 134.64M
11 1-11 单例模式及单例模式实现的坑3 .mp4 47.05M
12 1-12 单例模式的例子-日志和全局配置类1 .mp4 143.13M
13 1-13 单例模式的例子-日志和全局配置类2 .mp4 139.59M
14 1-14 单例模式的例子-日志和全局配置类3 .mp4 144.78M
15 1-15 抽象工厂模式及示例1 .mp4 105.16M
16 1-16 抽象工厂模式及示例2 .mp4 104.65M
17 1-17 Builder生成器模式及示例1 .mp4 128.49M
18 1-18 Builder生成器模式及示例2 .mp4 126.48M
19 1-19 工厂方法模式及示例1 .mp4 107.21M
20 1-20 工厂方法模式及示例2 .mp4 103.79M
21 1-21 工厂方法模式及示例3-UML架构和创建型模式总结 .mp4 30.85M
阶段一:C++面向对象编程在工程实战中的应用
01 1-1 CPP中高级工程师成长体系课导学 .mp4 51.10M
02 1-2 WindowsC++环境的搭建 .mp4 112.10M
03 1-3 Mac++环境的搭建 .mp4 63.17M
04 1-4 Linux Ubuntu发行版环境的搭建C++环境的搭建 .mp4 127.07M
05 1-5 QT环境的搭建 .mp4 118.87M
06 1-6 HelloWorld从面向过程编程到面向对象编程的过渡 最近学习.mp4 86.27M
07 1-7 从微软公司的一道面试题来谈从面向过程到面向对象 .mp4 151.43M
08 1-8 从面向过程编程到面向对象过渡的理论分析 .mp4 34.81M
09 1-9 面向对象三大特性及实现一个不能被继承的类 .mp4 110.41M
10 1-10 少用继承及接口继承的使用 .mp4 101.26M
11 1-11 少用虚函数及函数指针代替虚函数的方案 .mp4 98.56M
12 1-12 面向对象编程的两个常见错误理解 .mp4 42.64M
13 1-13 C++避免钻石继承的方法--虚继承 .mp4 78.36M
01 1-1 怎么实现一个MyString的Class .mp4 88.93M
02 1-2 Class的321实现 .mp4 87.17M
03 1-3 MyString的move基本实现 .mp4 88.31M
04 1-4 C++面向对象编程基础原则 .mp4 7.57M
05 1-5 再看MyString的构造实现 .mp4 68.13M
06 1-6 防止构造函数的隐式转换类型 .mp4 84.71M
07 1-7 C++的值类型和引用类型 .mp4 87.02M
08 1-8 一些重要概念:左值、右值、左值引用、右值引用等 .mp4 108.94M
09 1-9 左值右值相关 .mp4 103.24M
10 1-10 move语义的意义和使用细节 .mp4 93.73M
01 1-1 编译器优化与mov的语义的关系及返回值优化 最近学习.mp4 113.46M
02 1-2 返回值优化:RVO和NRVO .mp4 52.90M
03 1-3 返回值优化策略的选择 .mp4 89.96M
04 1-4 const的基本使用 .mp4 88.55M
05 1-5 const的修饰对象的引用和函数 .mp4 112.70M
06 1-6 const、mutable和volatile .mp4 124.53M
07 1-7 再谈构造函数--什么该做什么不该做 .mp4 33.97M
08 1-8 再谈构造函数--初始化顺序和参数列表 .mp4 90.80M
09 1-9 构造函数静态成员变量的初始化 .mp4 93.13M
01 1-1 函数重载 .mp4 134.52M
02 1-2 重载函数的本质和实现原理 .mp4 96.51M
03 1-3 运算符重载 .mp4 81.08M
04 1-4 Rational类的实现 .mp4 91.36M
05 1-5 Rational类的运算符重载实现 .mp4 143.73M
06 1-6 函数对象的本质是什么.mp4 83.71M
07 1-7 函数对象的本质是什么.mp4 116.14M
08 1-8 函数内部怎么定义函数--lambda表达式 .mp4 116.63M
09 1-9 Lambda表达式实现闭包 最近学习.mp4 199.49M
10 1-10 Lambda表达式和函数对象使用的类比.mp4 109.42M
11 1-11 Lambda表达式和函数对象使用的类比.mp4 152.03M
12 1-12 Lambda表达式的意义 .mp4 109.40M
13 1-13 inline内联函数的使用和本质 .mp4 141.61M
01 1-1 几道面试题来看堆和栈在内存分配和传递 .mp4 90.21M
02 1-2 几道面试题来看堆和栈在内存分配和传递2 .mp4 88.86M
03 1-3 CPP的内存世界划分 .mp4 80.72M
04 1-4 从一个经典函数错误起谈谈栈空间调试 .mp4 157.66M
05 1-5 汇编调试基础1 .mp4 86.50M
06 1-6 汇编调试基础2 .mp4 22.24M
07 1-7 从汇编角度看程序函数栈和main函数流程1 .mp4 138.44M
08 1-8 从汇编角度看程序函数栈和main函数流程2 .mp4 124.33M
09 1-9 从堆栈角度来分析ShellCode和软件安全1 .mp4 54.66M
10 1-10 从堆栈角度来分析ShellCode和软件安全2 .mp4 102.54M
11 1-11 C++中资源分配的方式RAII .mp4 17.36M
12 1-12 析构函数为什么是虚函数及RAII的具体使用 .mp4 160.57M
13 1-13 在异常情况下RAII如何保证资源的顺利释放 .mp4 101.43M
01 1-1 怎么实现智能指针 .mp4 153.08M
02 1-2 CPP中常见的智能指针 .mp4 170.34M
03 1-3 CPP中常见的智能指针 .mp4 95.82M
04 1-4 CPP中到底该不该用异常 .mp4 74.55M
05 1-5 怎么用异常.mp4 104.41M
06 1-6 怎么用异常.mp4 143.09M
07 1-7 怎么用异常.mp4 139.03M
08 1-8 1-new的实现细节,如果new失败了怎么办,工程中怎么处理new .mp4 70.71M
09 1-9 2-new的实现细节,如果new失败了怎么办,工程中怎么处理new .mp4 103.67M
10 1-10 3-new的实现细节,如果new失败了怎么办,工程中怎么处理new .mp4 98.86M
11 1-11 4-new的实现细节,如果new失败了怎么办,工程中怎么处理new .mp4 106.36M
12 1-12 5-new的实现细节,如果new失败了怎么办,工程中怎么处理new .mp4 88.56M
13 1-13 CPP对象模型初步1 .mp4 66.70M
14 1-14 CPP对象模型初步2 .mp4 72.00M
15 1-15 CPP对象模型初步3 .mp4 120.96M
16 1-16 动态多态和静态多态 .mp4 93.75M
17 1-17 CPP的模板编程1 .mp4 96.03M
18 1-18 CPP的模板编程2 .mp4 120.63M
19 1-19 CPP的模板编程3 .mp4 140.64M
20 1-20 CPP11中对模板编程的高级支持1 .mp4 134.68M
21 1-21 CPP11中对模板编程的高级支持2 .mp4 107.86M
22 1-22 CPP11中对模板编程的高级支持3 .mp4 88.30M
01 1-1 第七周内容更新说明 最近学习.mp4 3.31M
02 1-2 爬虫需求分析 .mp4 90.51M
03 1-3 QT的基本使用,工程创建等.mp4 33.77M
04 1-4 QT的基本使用,工程创建等.mp4 93.91M
05 1-5 QT怎么实现一个简单的跨平台爬虫 .mp4 95.25M
06 1-6 爬虫的网络类实现1 .mp4 125.65M
07 1-7 爬虫的网络类实现2 .mp4 60.00M
08 1-8 爬虫的网络类实现3 .mp4 219.25M
09 1-9 爬虫的数据处理和数据存储1 .mp4 193.55M
10 1-10 爬虫的数据处理和数据存储2 .mp4 174.78M
11 1-11 爬虫的数据处理和数据存储3 .mp4 35.98M
12 1-12 爬虫的数据处理和数据存储4 .mp4 103.27M
13 1-13 爬虫的数据处理和数据存储5 .mp4 193.88M
14 1-14 爬虫的整体逻辑 .mp4 27.66M
15 1-15 爬虫的测试、存在待改进的问题1 .mp4 81.92M
16 1-16 爬虫的测试、存在待改进的问题2 .mp4 101.49M
17 1-17 爬虫的测试、存在待改进的问题3 .mp4 51.63M
配套资料