重学C++,是为了绕过那些坑

C++这门语言,学的人多,精通的人少。很多人简历上写着熟悉C++,但遇到内存泄漏、指针悬空、对象生命周期管理这些问题时,还是只能靠试错和Google。这套课程的核心价值,不在于重新教语法,而在于“重构”。它针对的是那些已经写过一段时间C++代码,但在工程实践中感到困惑的开发者。

讲师来自百度,有着十年的一线实战经验,课程内容紧贴现代C++的主流编程思想和底层细节。它解决的最核心问题,是让你的代码从“能跑”变成“健壮、高效、符合现代标准”。如果你只是想入门,网上免费的教程足够;但如果你想深入理解“为什么这么写”,建立完整的知识体系,这门课是一个靠谱的切入点。

适合谁看?先看哪几块?

这门课不适合零基础新手。你最好已经具备C++的基本语法知识,了解什么是类、对象、指针,甚至简单操作过STL容器。课程的起点较高,直接进入内存模型、对象生命周期、复杂对象初始化等深层话题。

建议学习顺序:先快速过一遍现代C++特性部分,建立整体认知;再重点攻克内存管理和对象模型章节,这是最核心的内功;最后结合实际工程案例进行深度剖析。对于有经验的上班族或正在转行的后端开发者,如果之前对C++的理解停留在表面,这门课能帮助补齐短板。

配合练习时,不要只看不练。课程中涉及的每个概念,都要尝试自己动手写代码验证。比如学习RAII时,尝试用不同方式管理资源;学习智能指针时,对比原始指针的风险。只有把理论转化为肌肉记忆,才能真正掌握。

学完能独立做什么?

学完这门课,你将能够独立进行更复杂的C++系统开发。具体来说,你能够更精准地管理内存,避免常见的运行时错误;能够写出更符合现代C++标准的代码,提高代码的可读性和可维护性;能够深入理解对象的生命周期和构造析构过程,解决复杂的资源管理问题。

更重要的是,你将建立起一套系统的C++知识框架,面对新的技术挑战时,能够迅速定位问题根源,而不是盲目搜索。这对于追求技术深度的后端工程师来说,是一次必要的内功修炼。

资料包配合课程视频,提供了必要的练习素材和补充阅读。建议边学边练,确保每个概念都能落实到代码层面。如果遇到不懂的地方,不要急于跳过,回到基础重新理解,这样才能真正构建起扎实的技术能力。

课程目录

├── 第1章C++概括/【()】 │ ├── [ 25M] 1-12020重C++课程导学.mp4
 │ ├── [ 41M] 1-2CPP的历史.mp4
 │ ├── [ 31M] 1-3CPP的特点.mp4
 │ ├── [ 23M] 1-4CPP的应用.mp4
 │ └── [ 37K] 1-5第一章课后练习题.pdf
 ├── 第2章C++基础语法/【()】 │ ├── [ 22M] 2-1编译型语言.mp4
 │ ├── [ 60M] 2-2语言的数据类型.mp4
 │ ├── [ 58M] 2-3开发环境的安装与使用1-安装.mp4
 │ ├── [139M] 2-4开发环境的安装与使用2-使用于调试.mp4
 │ ├── [ 58M] 2-5语言的标识符和关键字.mp4
 │ ├── [ 40M] 2-6变量与常量.mp4
 │ ├── [ 25M] 2-7语言的注释.mp4
 │ └── [ 39K] 2-8第二章课后练习题.pdf
 ├── 第3章C++的运算符与表达式/【()】 │ ├── [122M] 3-10提升补充部分:补码2.mp4
 │ ├── [ 95M] 3-11提升补充部分:补码及位运算说明.mp4
 │ ├── [ 27M] 3-1运算符表达式和基本语句.mp4
 │ ├── [ 77M] 3-2运算符表达式和基本语句–算术运算符.mp4
 │ ├── [ 36M] 3-3运算符表达式和基本语句–关系运算符.mp4
 │ ├── [117M] 3-4运算符表达式和基本语句–逻辑运算符.mp4
 │ ├── [ 42M] 3-5运算符表达式和基本语句–赋值运算符.mp4
 │ ├── [ 84M] 3-6运算符表达式和基本语句–位运算符.mp4
 │ ├── [ 99M] 3-7运算符表达式和基本语句–杂项运算符及运算符的优先级.mp4
 │ ├── [ 44K] 3-8第三章课后练习.pdf
 │ └── [ 72M] 3-9提升补充部分:补码1.mp4
 ├── 第4章从C语言的陷阱到C++的改进/【()】 │ ├── [ 79M] 4-10C语言整数溢出问题下.mp4
 │ ├── [109M] 4-11.1C语言字符串典型缺陷.mp4
 │ ├── [134M] 4-12.2C语言字符串问题.mp4
 │ ├── [131M] 4-1字符语法的常见陷阱上.mp4
 │ ├── [ 34M] 4-2字符语法的常见陷阱下.mp4
 │ ├── [ 84M] 4-3C语言数组退化问题上.mp4
 │ ├── [ 79M] 4-4C语言数组退化问题下.mp4
 │ ├── [ 87M] 4-5C语言移位运算问题上.mp4
 │ ├── [ 82M] 4-6C语言移位运算问题下.mp4
 │ ├── [ 72M] 4-7C语言类型转换问题上.mp4
 │ ├── [104M] 4-8C语言类型转换问题下.mp4
 │ └── [ 84M] 4-9C语言整数溢出问题上.mp4
 ├── 第5章C++基础容器/【()】 │ ├── [134M] 5-10字符串基本操作2.mp4
 │ ├── [134M] 5-11string的简介.mp4
 │ ├── [ 66M] 5-1序列容器–数组.mp4
 │ ├── [ 54M] 5-2off-by-oneerror数组下标.mp4
 │ ├── [ 68M] 5-3数组增删改查及二维数组.mp4
 │ ├── [ 99M] 5-4动态数组Vector1.mp4
 │ ├── [ 44M] 5-5动态数组vector2.mp4
 │ ├── [104M] 5-6字符串简介.mp4
 │ ├── [176M] 5-7Unicode编码.mp4
 │ ├── [187M] 5-8字符串的指针表示.mp4
 │ └── [206M] 5-9字符串基本操作1.mp4
 ├── 第6章彻底学会C++指针,引用/【()】 │ ├── [218M] 6-10CPP程序的存储区域划分.mp4
 │ ├── [ 22M] 6-11CPP程序的存储区域划分总结.mp4
 │ ├── [ 19M] 6-13RAII初步.mp4
 │ ├── [ 59M] 6-14几种变量的对比.mp4
 │ ├── [ 59M] 6-15内存泄漏.mp4
 │ ├── [234M] 6-16智能指针auto_ptr.mp4
 │ ├── [175M] 6-17智能指针unique_ptr.mp4
 │ ├── [ 38M] 6-18shared_ptr和weak_ptr理论讲解.mp4
 │ ├── [121M] 6-19shared_ptr和weak_ptr代码演示.mp4
 │ ├── [151M] 6-1指针的概念.mp4
 │ ├── [122M] 6-20引用.mp4
 │ ├── [ 94M] 6-3一般指针,数组指针和指针数组.mp4
 │ ├── [103M] 6-4const与指针.mp4
 │ ├── [ 23M] 6-5指向指针的指针.mp4
 │ ├── [ 77M] 6-6关于野指针.mp4
 │ ├── [126M] 6-7指针的基本操作一.mp4
 │ ├── [100M] 6-8指针的基本操作二.mp4
 │ └── [182M] 6-9指针的基本操作三.mp4
 ├── 第7章C++基础句法/【()】 │ ├── [135M] 7-10for循环的一个优化实例.mp4
 │ ├── [ 28M] 7-11函数基础.mp4
 │ ├── [ 81M] 7-12函数重载overload与NameMangling.mp4
 │ ├── [ 89M] 7-13指向函数的指针与返回指针的函数.mp4
 │ ├── [ 54M] 7-14命名空间。.mp4
 │ ├── [198M] 7-15函数体的Hack过程.mp4
 │ ├── [ 90M] 7-16内联函数。.mp4
 │ ├── [ 63M] 7-17数学归纳法与递归.mp4
 │ ├── [162M] 7-18递归的特点和Hack过程.mp4
 │ ├── [ 76M] 7-19尾递归的优化.mp4
 │ ├── [ 20M] 7-1图灵机与三种基本结构.mp4
 │ ├── [ 34M] 7-3if语句的例子.mp4
 │ ├── [ 15M] 7-4switch分支基础.mp4
 │ ├── [ 85M] 7-5switch和if的对比.mp4
 │ ├── [ 83M] 7-6自定义类型–枚举.mp4
 │ ├── [ 41M] 7-7自定义类型–结构体与联合体.mp4
 │ ├── [ 94M] 7-8结构体的内存布局.mp4
 │ └── [153M] 7-9三种循环的基本使用与比较.mp4
 ├── 第8章C++高级语法/【()】 │ ├── [ 64M] 8-10文件操作基础.mp4
 │ ├── [ 58M] 8-11文本文件的操作.mp4
 │ ├── [ 61M] 8-13Complex其他运算符重载.mp4
 │ ├── [ 74M] 8-14头文件重复包含问题.mp4
 │ ├── [ 46M] 8-15关于前七章的练习题及答案.mp4
 │ ├── [163M] 8-16深拷贝浅拷贝及move语义的优化.mp4
 │ ├── [137M] 8-17面向对象的抽象法则2.mp4
 │ ├── [113M] 8-18Hack对象模型和虚函数.mp4
 │ ├── [ 25M] 8-19面向对象三大特性及总结.mp4
 │ ├── [ 74M] 8-1从抽象到面向对象编程.mp4
 │ ├── [ 70M] 8-2面向对象的抽象法则1-具体类型的抽象.mp4
 │ ├── [ 74M] 8-3对象的属性.mp4
 │ ├── [108M] 8-4运算符重载.mp4
 │ ├── [121M] 8-5拷贝构造及临时对象的优化.mp4
 │ ├── [103M] 8-6前置与后置操作符.mp4
 │ ├── [105M] 8-7标准输入输出IO重载.mp4
 │ ├── [ 30M] 8-8IO流基础.mp4
 │ └── [105M] 8-9IO缓存区.mp4
 └── 第9章C++编程思想/【()】 ├── [137M] 9-10static_cast和dynamic_cast的使用.mp4
 ├── [110M] 9-11Adapter模式和多重继承.mp4
 ├── [ 50M] 9-12Adapter组合方式实现.mp4
 ├── [ 17M] 9-13设计模式总结.mp4
 ├── [ 40M] 9-14泛型编程之泛型函数1.mp4
 ├── [ 77M] 9-15泛型编程之泛型函数2.mp4
 ├── [ 76M] 9-16泛型编程的递推过程及总结.mp4
 ├── [ 35M] 9-1软件的设计模式.mp4
 ├── [ 43M] 9-2单例模式。.mp4
 ├── [ 76M] 9-4观察者模式.mp4
 ├── [ 79M] 9-5list的使用和观察者模式的实现1.mp4
 ├── [153M] 9-6观察者模式的实现2.mp4
 ├── [ 43M] 9-7void星NULL和nullptr.mp4
 ├── [ 25M] 9-8static_cast的使用.mp4
 └── [ 37M] 9-9reinterpret_cast的使用.mp4
 ├── 第10章C++进阶编程/【()】 │ ├── [ 70M] 10-10手写GC与异常.mp4
 │ ├── [ 74M] 10-11自定义迭代器与手写GC.mp4
 │ ├── [ 64M] 10-12容器适配器.mp4
 │ ├── [ 35M] 10-13空间配置器初步.mp4
 │ ├── [ 43M] 10-14自定义空间配置器.mp4
 │ ├── [ 66M] 10-15STL空间配置器源码剖析与STL总结.mp4
 │ ├── [ 85M] 10-16关于Boost库.mp4
 │ ├── [115M] 10-17CPP多线程基础.mp4
 │ ├── [111M] 10-18多线程银行存取款案例.mp4
 │ ├── [ 30M] 10-19多线程小结.mp4
 │ ├── [ 22M] 10-1STL标准库简介.mp4
 │ ├── [144M] 10-2序列型容器和函数对象基本使用.mp4
 │ ├── [103M] 10-3关联容器map的基本使用和查找.mp4
 │ ├── [112M] 10-4关联容器的插入删除及迭代器失效问题.mp4
 │ ├── [123M] 10-5从函数指针到仿函数模板.mp4
 │ ├── [ 87M] 10-6算法transform和lambda表达式.mp4
 │ ├── [103M] 10-7STL容器的统计与二分查找.mp4
 │ ├── [129M] 10-8从手写全排列到STL的实现.mp4
 │ └── [ 80M] 10-9迭代器基本使用.mp4
 ├── 第11章LinuxC++编程初步/【()】 │ ├── [ 73M] 11-1-1LinuxC++环境搭建、编程和调试基础上.mp4
 │ ├── [128M] 11-10LinuxCPP之Makefile编写中的变量3.mp4
 │ ├── [117M] 11-11LinuxCPP之Makefile的自动生成和部署–.mp4
 │ ├── [ 80M] 11-12VisualStudio开发LinuxCPP的基本使用.mp4
 │ ├── [ 89M] 11-2-2LinuxC++环境搭建、编程和调试基础下.mp4
 │ ├── [ 45M] 11-3LinuxCPP之什么是Makefile.mp4
 │ ├── [ 59M] 11-4LinuxCPP之Makefile产生的背景.mp4
 │ ├── [ 30M] 11-5LinuxCPP之Makefile之make和Makef.mp4
 │ ├── [ 58M] 11-6LinuxCPP之Makefile的格式.mp4
 │ ├── [114M] 11-7LinuxCPP之Makefile的扩展用法.mp4
 │ ├── [ 69M] 11-8LinuxCPP之Makefile编写中的变量1.mp4
 │ └── [ 90M] 11-9LinuxCPP之Makefile编写中的变量2.mp4
 ├── 第12章桌面应用项目实战:设计项目的架构和标准/【()】 │ ├── [ 60M] 12-2项目环境的安装和部署.mp4
 │ ├── [ 49M] 12-3项目的基本架构和pro文件.mp4
 │ └── [ 27M] 12-4项目中用到的大致QT知识.mp4
 ├── 第13章实现项目《慕影》的通用组件模块:/【()】 │ ├── [ 49M] 13-1QT和VS的项目使用.mp4
 │ ├── [ 50M] 13-2QT项目的基础架构类和UI类.mp4
 │ ├── [ 77M] 13-3QQString的基本使用.mp4
 │ ├── [ 73M] 13-4QDebug的基本使用.mp4
 │ ├── [ 59M] 13-5QT的智能指针QScopedPointer.mp4
 │ └── [ 83M] 13-6QThread的使用.mp4
 ├── 第14章《慕影》播放器UI模块开发/【()】 │ ├── [ 68M] 14-1项目的整体UI架构.mp4
 │ ├── [ 69M] 14-2项目资源和UI加载的流程.mp4
 │ ├── [ 32M] 14-3qml的最基本使用和项目绑定.mp4
 │ ├── [ 76M] 14-4修正一个bug和框架调整.mp4
 │ ├── [ 70M] 14-5qml属性的基本使用.mp4
 │ ├── [ 49M] 14-6项目的换肤实现1.mp4
 │ ├── [ 37M] 14-7项目的换肤实现2.mp4
 │ ├── [ 98M] 14-8项目的换肤实现3.mp4
 │ └── [ 88M] 14-9项目的换肤实现4.mp4
 ├── 第15章实现《慕影》音视频模块开发/【()】 │ ├── [111M] 15-10ffmpeg编写解码程序2.mp4
 │ ├── [105M] 15-11ffmpeg编写解码程序3.mp4
 │ ├── [137M] 15-12ffmpeg编写解码程序4.mp4
 │ ├── [ 19M] 15-1音视频采样编码的基本原理.mp4
 │ ├── [ 51M] 15-2ffmpeg的基本情况.mp4
 │ ├── [ 42M] 15-3PCM过程的一些基本参数.mp4
 │ ├── [ 54M] 15-4读取PCM音频文件进行播放1.mp4
 │ ├── [ 31M] 15-5读取PCM音频文件进行播放2.mp4
 │ ├── [ 66M] 15-6视频的封装格式及播放的基本流程.mp4
 │ ├── [ 39M] 15-7ffmpeg的解码大致流程.mp4
 │ ├── [ 45M] 15-8ffmpeg程序的环境配置.mp4
 │ └── [ 59M] 15-9ffmpeg编写解码程序1.mp4
 ├── 第16章《慕影》播放器项目总结/【()】 │ ├── [ 25M] 16-1项目总结.mp4
 │ ├── [ 35M] 16-2项目UI功能总结.mp4
 │ └── [ 68M] 16-4项目播放功能总结2.mp4
 └── 第17章C,C++内存调试初步/【()】 ├── [110M] 17-1调试初步.mp4
 ├── [112M] 17-2了解汇编语言.mp4
 ├── [ 25M] 17-3汇编语言基础.mp4
 … 其余 

13 项略,目录共 213 项