你是否还在用“十年前的C++”写代码?

很多开发者在学习或工作中存在一个尴尬的现状:语法背得熟,但遇到现代工程问题却无从下手。C++ 是一门语言,更是一个庞大的生态系统。从 C++98 到 C++20/23,标准发生了翻天覆地的变化。如果你依然停留在指针裸操作、手动管理内存、甚至还在用 C 风格的数组处理数据,那么你的代码在性能、安全性和可维护性上都会面临巨大挑战。

这门课程的核心价值不在于“教你认识分号”,而在于“重构认知”。它针对的是那些已经具备一定 C++ 基础,但在实际开发中发现自己知识体系存在断层、或者对现代 C++ 特性(如 RAII、智能指针、移动语义、模板元编程等)一知半解的开发者。课程旨在帮你打破旧有的思维惯性,建立符合现代工业标准的高效编程习惯,让你写的代码不仅“能跑”,而且“健壮”、“高性能”且“易于维护”。

学完能独立做什么?适合谁听?

完成本课程的学习后,你将能够独立进行以下工作:

  • 掌握现代 C++ 核心特性: 熟练运用智能指针管理资源,理解并实践移动语义以提升性能,使用 `auto`、范围 for 循环等简化代码结构。
  • 深入面向对象与泛型编程: 不再局限于简单的类封装,而是深入理解虚函数表机制、多态的实现原理,并能利用模板技术编写高复用性的通用组件。
  • 具备工程化思维: 理解 STL 容器的底层实现差异,能根据场景选择最合适的数据结构;了解内存布局与缓存命中率的关系,进行基础的代码优化。
  • 解决复杂问题的能力: 能够阅读并理解高质量的开源 C++ 项目代码,排查悬空指针、内存泄漏等棘手 bug。

适合人群:

  • 有一定基础的初学者: 已经学过 C++ 语法,但感觉知识零散,缺乏系统性构建。
  • 从其他语言转来的开发者: 如 Java、Python 开发者,希望深入理解底层机制,提升系统级编程能力。
  • 遇到瓶颈的初级工程师: 工作 1-3 年,发现代码写得越来越臃肿,希望升级技术栈,向中高级迈进。

前置要求: 建议至少了解基本的 C++ 语法(变量、循环、函数、基础类),无需精通模板或高级特性,否则跟上节奏会有困难。

资料怎么配合练习?建议先看哪几块?

本课程配套的资料包包含了详细的讲义、示例代码以及相关的拓展阅读材料。为了达到最佳学习效果,建议按照以下方式配合使用:

1. 概念先行,代码跟进: 在观看理论讲解时,务必亲手敲一遍示例代码。C++ 是强类型语言,编译错误是学习过程中最好的老师。不要只看不练,尤其是模板和指针部分,眼过千遍不如手过一遍。

2. 重点突破核心模块: 如果时间有限,建议优先攻克以下几个关键章节:资源管理(RAII 与智能指针)、移动语义与完美转发、STL 容器与算法、模板基础。这四块内容是 Modern C++ 的基石,理解它们能解决你 80% 的日常开发痛点。

3. 建立自己的代码库: 资料中的示例代码不要直接丢弃。建议将其整理到自己的本地项目中,并根据理解进行修改和扩展。例如,尝试用不同的智能指针替代原始指针,或者手动实现一个简单的 vector,以加深对其内部机制的理解。

4. 结合实战巩固: 学完一个阶段后,尝试用学到的新知识重构自己之前的旧代码。对比新旧代码的差异,思考性能提升点在哪里,这种“实战复盘”比做新题更有效。

总之,这门课不是速成班,而是一次系统的“知识大扫除”。它需要你投入足够的时间去消化每一个概念,但最终收获的是一个清晰、现代化、高效的 C++ 知识体系。对于想在后端开发、游戏引擎、高频交易等高性能领域深耕的开发者来说,这是一笔值得的投资。

mksz414 - 2022升级,重学C++ ,重构你的C++知识体系

本课程隶属 会员库 · MK实战课(一部分是老课) / 课程盒子4-mksz400至499,完整课程目录与配套资料如下。

课程目录

{10}--第10章C++进阶编程/
[10.10]--10-10手写GC与异常.mp4
[10.11]--10-11自定义迭代器与手写GC.mp4
[10.12]--10-12容器适配器.mp4
[10.13]--10-13空间配置器初步.mp4
[10.14]--10-14自定义空间配置器.mp4
[10.15]--10-15STL空间配置器源码剖析与STL总结.mp4
[10.16]--10-16关于Boost库.mp4
[10.17]--10-17CPP多线程基础.mp4
[10.18]--10-18多线程银行存取款案例.mp4
[10.19]--10-19多线程小结.mp4
[10.1]--10-1STL标准库简介.mp4
[10.2]--10-2序列型容器和函数对象基本使用.mp4
[10.3]--10-3关联容器map的基本使用和查找.mp4
[10.4]--10-4关联容器的插入删除及迭代器失效问题.mp4
[10.5]--10-5从函数指针到仿函数模板.mp4
[10.6]--10-6算法transform和lambda表达式.mp4
[10.7]--10-7STL容器的统计与二分查找.mp4
[10.8]--10-8从手写全排列到STL的实现.mp4
[10.9]--10-9迭代器基本使用.mp4
{11}--第11章LinuxC++编程初步/
[11.10]--11-10LinuxCPP之Makefile编写中的变量3.mp4
[11.11]--11-11LinuxCPP之Makefile的自动生成和部署--.mp4
[11.12]--11-12VisualStudio开发LinuxCPP的基本使用.mp4
[11.1]--11-1-1LinuxC++环境搭建、编程和调试基础上.mp4
[11.2]--11-2-2LinuxC++环境搭建、编程和调试基础下.mp4
[11.3]--11-3LinuxCPP之什么是Makefile.mp4
[11.4]--11-4LinuxCPP之Makefile产生的背景.mp4
[11.5]--11-5LinuxCPP之Makefile之make和Makef.mp4
[11.6]--11-6LinuxCPP之Makefile的格式.mp4
[11.7]--11-7LinuxCPP之Makefile的扩展用法.mp4
[11.8]--11-8LinuxCPP之Makefile编写中的变量1.mp4
[11.9]--11-9LinuxCPP之Makefile编写中的变量2.mp4
{12}--第12章桌面应用项目实战:设计项目的架构和标准/
[12.2]--12-2项目环境的安装和部署.mp4
[12.3]--12-3项目的基本架构和pro文件.mp4
[12.4]--12-4项目中用到的大致QT知识.mp4
{13}--第13章实现项目《慕影》的通用组件模块:/
[13.1]--13-1QT和VS的项目使用.mp4
[13.2]--13-2QT项目的基础架构类和UI类.mp4
[13.3]--13-3QQString的基本使用.mp4
[13.4]--13-4QDebug的基本使用.mp4
[13.5]--13-5QT的智能指针QScopedPointer.mp4
[13.6]--13-6QThread的使用.mp4
{14}--第14章《慕影》播放器UI模块开发/
[14.1]--14-1项目的整体UI架构.mp4
[14.2]--14-2项目资源和UI加载的流程.mp4
[14.3]--14-3qml的最基本使用和项目绑定.mp4
[14.4]--14-4修正一个bug和框架调整.mp4
[14.5]--14-5qml属性的基本使用.mp4
[14.6]--14-6项目的换肤实现1.mp4
[14.7]--14-7项目的换肤实现2.mp4
[14.8]--14-8项目的换肤实现3.mp4
[14.9]--14-9项目的换肤实现4.mp4
{15}--第15章实现《慕影》音视频模块开发/
[15.10]--15-10ffmpeg编写解码程序2.mp4
[15.11]--15-11ffmpeg编写解码程序3.mp4
[15.12]--15-12ffmpeg编写解码程序4.mp4
[15.1]--15-1音视频采样编码的基本原理.mp4
[15.2]--15-2ffmpeg的基本情况.mp4
[15.3]--15-3PCM过程的一些基本参数.mp4
[15.4]--15-4读取PCM音频文件进行播放1.mp4
[15.5]--15-5读取PCM音频文件进行播放2.mp4
[15.6]--15-6视频的封装格式及播放的基本流程.mp4
[15.7]--15-7ffmpeg的解码大致流程.mp4
[15.8]--15-8ffmpeg程序的环境配置.mp4
[15.9]--15-9ffmpeg编写解码程序1.mp4
{16}--第16章《慕影》播放器项目总结/
[16.1]--16-1项目总结.mp4
[16.2]--16-2项目UI功能总结.mp4
[16.4]--16-4项目播放功能总结2.mp4
{17}--第17章 C,C++内存调试初步/
内容更新中/
{18}--第18章C++的陷阱和经验/
[18.1]--18-1谈谈个人的学习工作经历.mp4
[18.2]--18-2谈谈个人学习工作的一点感悟.mp4
[18.3]--18-3推荐几本CPP的书籍.mp4
[18.4]--18-4谈谈CPP的陷阱.mp4
{19}--第19章课程总结/
[19.1]--19-1课程总结.mp4
{1}--第1章C++概括/
(1.1)--1-5第一章课后练习题.pdf
[1.1]--1-12020重C++课程导学[16].mp4
[1.2]--1-2CPP的历史[16].mp4
[1.3]--1-3CPP的特点[16].mp4
[1.4]--1-4CPP的应用[16].mp4
{2}--第2章C++基础语法/
(2.1)--2-8第二章课后练习题.pdf
[2.1]--2-1编译型语言[16].mp4
[2.2]--2-2语言的数据类型[16].mp4
[2.3]--2-3开发环境的安装与使用1-安装[16].mp4
[2.4]--2-4开发环境的安装与使用2-使用于调试[16].mp4
[2.5]--2-5语言的标识符和关键字[16].mp4
[2.6]--2-6变量与常量[16].mp4
[2.7]--2-7语言的注释[16].mp4
{3}--第3章C++的运算符与表达式/
(3.1)--3-8第三章课后练习.pdf
[3.10]--3-11提升补充部分:补码及位运算说明[16].mp4
[3.1]--3-1运算符表达式和基本语句[16].mp4
[3.2]--3-2运算符表达式和基本语句--算术运算符[16].mp4
[3.3]--3-3运算符表达式和基本语句--关系运算符[16].mp4
[3.4]--3-4运算符表达式和基本语句--逻辑运算符[16].mp4
[3.5]--3-5运算符表达式和基本语句--赋值运算符[16].mp4
[3.6]--3-6运算符表达式和基本语句--位运算符[16].mp4
[3.7]--3-7运算符表达式和基本语句--杂项运算符及运算符的优先级[16].mp4
[3.8]--3-9提升补充部分:补码1[16].mp4
[3.9]--3-10提升补充部分:补码2[16].mp4
{4}--第4章从C语言的陷阱到C++的改进/
[4.10]--4-10C语言整数溢出问题下[16].mp4
[4.11]--4-11.1C语言字符串典型缺陷[16].mp4
[4.12]--4-12.2C语言字符串问题[16].mp4
[4.1]--4-1字符语法的常见陷阱上[16].mp4
[4.2]--4-2字符语法的常见陷阱下[16].mp4
[4.3]--4-3C语言数组退化问题上[16].mp4
[4.4]--4-4C语言数组退化问题下[16].mp4
[4.5]--4-5C语言移位运算问题上[16].mp4
[4.6]--4-6C语言移位运算问题下[16].mp4
[4.7]--4-7C语言类型转换问题上[16].mp4
[4.8]--4-8C语言类型转换问题下[16].mp4
[4.9]--4-9C语言整数溢出问题上[16].mp4
{5}--第5章C++基础容器/
[5.10]--5-10字符串基本操作2[16].mp4
[5.11]--5-11string的简介[16].mp4
[5.1]--5-1序列容器--数组[16].mp4
[5.2]--5-2off-by-oneerror数组下标[16].mp4
[5.3]--5-3数组增删改查及二维数组[16].mp4
[5.4]--5-4动态数组Vector1[16].mp4
[5.5]--5-5动态数组vector2[16].mp4
[5.6]--5-6字符串简介[16].mp4
[5.7]--5-7Unicode编码[16].mp4
[5.8]--5-8字符串的指针表示[16].mp4
[5.9]--5-9字符串基本操作1[16].mp4
{6}--第6章彻底学会C++指针,引用/
[6.10]--6-10CPP程序的存储区域划分[16].mp4
[6.11]--6-11CPP程序的存储区域划分总结[16].mp4
[6.13]--6-13RAII初步[16].mp4
[6.14]--6-14几种变量的对比[16].mp4
[6.15]--6-15内存泄漏[16].mp4
[6.16]--6-16智能指针auto_ptr[16].mp4
[6.17]--6-17智能指针unique_ptr[16].mp4
[6.18]--6-18shared_ptr和weak_ptr理论讲解[16].mp4
[6.19]--6-19shared_ptr和weak_ptr代码演示[16].mp4
[6.1]--6-1指针的概念[16].mp4
[6.20]--6-20引用[16].mp4
[6.3]--6-3一般指针,数组指针和指针数组[16].mp4
[6.4]--6-4const与指针[16].mp4
[6.5]--6-5指向指针的指针[16].mp4
[6.6]--6-6关于野指针[16].mp4
[6.7]--6-7指针的基本操作一[16].mp4
[6.8]--6-8指针的基本操作二[16].mp4
[6.9]--6-9指针的基本操作三[16].mp4
{7}--第7章C++基础句法/
[7.10]--7-10for循环的一个优化实例[16].mp4
[7.11]--7-11函数基础[16].mp4
[7.12]--7-12函数重载overload与NameMangling[16].mp4
[7.13]--7-13指向函数的指针与返回指针的函数[16].mp4
[7.14]--7-14命名空间。[16].mp4
[7.15]--7-15函数体的Hack过程[16].mp4
[7.16]--7-16内联函数。[16].mp4
[7.17]--7-17数学归纳法与递归[16].mp4
[7.18]--7-18递归的特点和Hack过程[16].mp4
[7.19]--7-19尾递归的优化[16].mp4
[7.1]--7-1图灵机与三种基本结构[16].mp4
[7.3]--7-3if语句的例子[16].mp4
[7.4]--7-4switch分支基础[16].mp4
[7.5]--7-5switch和if的对比[16].mp4
[7.6]--7-6自定义类型--枚举[16].mp4
[7.7]--7-7自定义类型--结构体与联合体[16].mp4
[7.8]--7-8结构体的内存布局[16].mp4
[7.9]--7-9三种循环的基本使用与比较[16].mp4
{8}--第8章C++高级语法/
[8.10]--8-10文件操作基础[16].mp4
[8.11]--8-11文本文件的操作[16].mp4
[8.13]--8-13Complex其他运算符重载[16].mp4
[8.14]--8-14头文件重复包含问题[16].mp4
[8.15]--8-15关于前七章的练习题及答案[16].mp4
[8.16]--8-16深拷贝浅拷贝及move语义的优化[16].mp4
[8.17]--8-17面向对象的抽象法则2[16].mp4
[8.18]--8-18Hack对象模型和虚函数[16].mp4
[8.19]--8-19面向对象三大特性及总结[16].mp4
[8.1]--8-1从抽象到面向对象编程[16].mp4
[8.2]--8-2面向对象的抽象法则1-具体类型的抽象[16].mp4
[8.3]--8-3对象的属性[16].mp4
[8.4]--8-4运算符重载[16].mp4
[8.5]--8-5拷贝构造及临时对象的优化[16].mp4
[8.6]--8-6前置与后置操作符[16].mp4
[8.7]--8-7标准输入输出IO重载[16].mp4
[8.8]--8-8IO流基础[16].mp4
[8.9]--8-9IO缓存区[16].mp4
{9}--第9章C++编程思想/
[9.10]--9-10static_cast和dynamic_cast的使用.mp4
[9.11]--9-11Adapter模式和多重继承.mp4
[9.12]--9-12Adapter组合方式实现.mp4
[9.13]--9-13设计模式总结.mp4
[9.14]--9-14泛型编程之泛型函数1.mp4
[9.15]--9-15泛型编程之泛型函数2.mp4
[9.16]--9-16泛型编程的递推过程及总结.mp4
[9.1]--9-1软件的设计模式.mp4
[9.2]--9-2单例模式。.mp4
[9.4]--9-4观察者模式.mp4
[9.5]--9-5list的使用和观察者模式的实现1.mp4
[9.6]--9-6观察者模式的实现2.mp4
[9.7]--9-7void星NULL和nullptr.mp4
[9.8]--9-8static_cast的使用.mp4
[9.9]--9-9reinterpret_cast的使用.mp4
新建文件夹/
核对章节.txt
课件.zip