




资源介绍
视频数量:192个
总时长:35小时3分
课程介绍:
C++20 编程大师课程 从基础到进阶 (上)
你有没有想过这样一个问题:为什么那么多程序员绕了一大圈,最后还是回到C++?明明现在Python、Go这些语言看起来更"友好",为什么C++依然是系统开发、游戏引擎、高频交易这些领域的"钉子户"?
答案很简单——因为C++是少数几种既能贴近硬件、又能写出高级抽象的语言。它不快,也不温柔,但它给你一种"一切尽在掌握"的感觉。学习C++确实不容易,但一旦你真正理解了它,你会获得一种对计算机工作方式的深层理解,这是其他语言很难给你的。
这门《C++20编程大师课程:从基础到进阶(上)》就是为你准备的一份系统学习地图。192节课,35小时时长,从开发环境搭建一路讲到C++核心概念。就算你之前没碰过C++,或者学过一点但总是云里雾里,跟着这套课程走一遍,你会发现很多原本模糊的概念突然清晰起来。
一、磨刀不误砍柴工:开发环境的搭建
很多人学C++的第一道坎其实不是语言本身,而是被开发环境劝退。装个编译器、配置个编辑器、折腾半天发现编译报错却不知道哪里出了问题——这种体验太常见了。
课程一开始花了相当篇幅讲环境搭建,Windows和Linux两个平台都照顾到了。Windows下会教你安装Visual Studio和VS Code,并配置MSVC、GCC、Clang三套编译器;Linux下则会演示如何在Ubuntu上一步步装好GCC和Clang,把VS Code调通。除了本地环境,还介绍了在线编译器和项目模板,方便你快速验证小段代码。
这一部分看似"琐碎",但恰恰是后面一切顺利的基础。把环境配好,后面学起来会顺畅很多。
二、第一个程序:让C++跑起来
环境就绪后,自然是写第一个程序。但课程不只是让你照抄"Hello World",而是从注释、错误信息、语句与函数这些最基本的概念讲起。你会理解C++程序的执行模型,搞清楚源代码、编译器、链接器各自扮演什么角色,明白"核心语言、标准库、STL"三者之间的区别。这些概念很多教程直接跳过,却是你后续理解C++的关键。
三、变量和数据类型:程序的基本积木
接下来进入数据类型的环节。C++的类型系统是出了名的复杂,但课程从最朴素的二进制和十进制讲起,把整数、小数、布尔、字符这些基础类型一一拆解。整数修饰符有哪些、短整型长整型有何区别、浮点数的精度如何取舍、auto关键字该怎么用——课程都会讲到。还会带你看一遍C++的类型在内存中到底是怎么存放的,帮你建立起直觉。
四、运算操作:让数据动起来
有了数据,下一步自然是操作数据。课程系统介绍了算术运算、运算符优先级与结合性、前缀后缀自增自减、复合赋值运算符、关系运算符和逻辑运算符。这些看起来"简单"的内容里其实藏着不少坑,比如前置后置的区别、短路求值的规则,课程都会用例子帮你掰开揉碎。输出格式化和数学函数库的使用也一并讲了。
五、常量与类型转换:精细控制数据
const、constexpr、constinit这几个关键字看起来相似,但用途各不相同。const是承诺不修改、constexpr是编译期可求值、constinit则是保证初始化发生在编译期。理解这些差异,你写出来的代码会更安全、更高效。
紧接着是数据类型转换。C++的隐式转换规则让很多新手栽过跟头——一个unsigned和一个int比较,结果怎么跟你想的不一样?课程会通过具体例子帮你理解什么时候会发生隐式转换、什么时候需要显式强制转换,以及整数溢出和下溢的原理。
六、位运算:直接操控二进制
位运算是C++的"看家本领"之一。通过移位运算、与或非异或这些逻辑位运算符,你可以在二进制层面直接操作数据。课程会教你如何用位运算打印整数的二进制表示,如何用掩码提取特定位,以及一个经典的实际应用:把RGB颜色信息打包到一个整数里。这一部分学完,你会对数据在计算机里的真实面目有更深的认识。
七、流程控制:让程序学会"做选择"
程序不能只会从头跑到尾,它需要根据条件做判断。课程从最基础的if语句、else if、switch讲起,把短路求值、三元运算符这些容易混淆的概念理清楚。特别值得一提的是,课程还覆盖了C++17和C++20的新特性:if constexpr、if初始化、switch初始化。这些新写法能让代码更紧凑、更安全,但很多老教程根本不会提。
八、循环:让程序重复干活
循环是任何编程语言的基础。C++的循环体系既有传统的for、while、do-while,也有C++11引入的基于范围的for循环,还有逗号运算符、多变量初始化这些稍高级的用法。课程一个不落:无限循环怎么写又怎么避免、嵌套循环怎么组织、break和continue该怎么用——都讲到了。每一类循环都会配练习帮你巩固,比如用循环实现一个简单的计算器,或者打印大规模数据。
九、数组:批量管理数据
当你需要处理一组同类型数据时,数组就登场了。课程从数组的声明和使用讲起,告诉你sizeof运算符怎么求数组大小、字符数组和普通数组有何区别、数组越界会引发什么后果。还会教你用数组实现一些有意思的小项目,比如一个随机数生成器,或者一个简易的"算命先生"程序。多维数组的使用和边界陷阱也会有专门的演示。
十、指针:C++的灵魂与挑战
指针大概是C++学习路上公认的最大boss。很多人学C++学到指针就放弃了,但也正因如此,搞懂指针才能让你真正进入C++的世界。
课程会从最基础的指针声明讲起,覆盖字符指针、指针数组、const指针和指向常量的指针这些容易混淆的概念。然后是指针和数组的关系、指针算术运算——如何在内存中导航、计算元素之间的距离、比较指针。这些内容乍一看抽象,但课程会用"交换数组数据"这样的实际例子带你一步步走通。
动态内存分配是另一个关键点。new和delete怎么用、悬空指针是什么、内存泄漏如何避免、new失败时怎么办——这些工程中真正会遇到的问题,课程都会涉及。学完这部分,你对程序内存布局的理解会上一个台阶。
十一、引用:指针的优雅替代品
引用在很多场景下比指针更安全、更易读。课程会带你理解引用的本质,比较它和指针的异同,介绍const引用和基于范围的for循环中引用的用法。这一节篇幅不长,但会让你明白为什么现代C++代码里越来越多地使用引用而非指针。
十二、字符串处理:从C风格到现代C++
C++的字符串处理是个有点"分裂"的话题:既有继承自C的字符数组和C-string函数,又有C++标准库的std::string,还有C++17引入的std::string_view。课程把这三者都讲到了。
你会学到字符操作函数、C-string的拼接和拷贝、std::string的声明和常用操作——拼接、访问字符、比较、修改、搜索、字符串和数字之间的转换。原始字符串字面量和std::string_view也会介绍到。掌握这些,你在实际项目里处理文本数据就能游刃有余。
十三、函数:组织代码的艺术
随着程序变大,你需要把代码拆分成函数。课程从函数声明和定义讲起,告诉你多文件项目中链接器是怎么工作的。然后是重点:函数参数传递。值传递、const值传递、指针传递、const指针传递、引用传递、const引用传递——每一种方式都有什么特点、什么时候该用哪种,课程都做了对比讲解。
数组作为函数参数的处理也是一大块内容,包括固定大小数组参数、多维数组参数、默认参数值、隐式转换等。最后还会讲到std::string_view作为函数参数的优势——这个C++17的特性能让函数接收字符串参数时更高效。
十四、枚举与类型别名:让代码更清晰
课程的最后一站是枚举类型和类型别名。enum class是C++11引入的强类型枚举,比起C++98的传统枚举更安全、更可控。using enum是C++20的新特性,能让你在特定作用域内直接使用枚举成员而不需要重复类型名。传统枚举的使用方式和坑也会有所提及。类型别名则是让代码更易读的实用工具。
学完这192节课,你对C++会有一个扎实的全面认知。你不再是一个只会抄代码片段的初学者,而是真正理解了变量在内存中的行为、指针和引用的本质、字符串处理的多种方式、函数参数传递的微妙差异。接下来,无论是去看更高级的C++特性,还是直接上手写小项目,你都有了稳固的根基。
C++学起来确实需要耐心,但每深入一层,你能掌控的东西就更多一层。这门课程不会让你速成,但它会陪你扎扎实实地走完这段路。