前言
随着学习的深入,C++ 的学习越来越迫在眉睫。
虽然我在学习 Maya API 以及 Unreal 过程中已经写过不少的 C++ 代码。
但以前写 C++ 都是用 Python 的经验迁移过去使用的,很多 C++ 的特性都不懂,很多库也不怎么会用。
所以正因为如此,才希望自己可以深入学习好 C++
课程推荐
C++ MasterClass
在 youtube 上找到了一个非常棒的教程
Youtube地址(不完整): https://www.youtube.com/watch?v=8jLOx1hD3_o
udemy 完整版地址: https://www.udemy.com/course/the-modern-cpp-20-masterclass/
B站
https://www.bilibili.com/video/BV1Hr4y1H7wB
https://www.bilibili.com/video/BV1JY4y1Y7uZ
https://www.bilibili.com/video/BV1iA4y1X76r
https://www.bilibili.com/video/BV1A34y1e7KS
https://www.bilibili.com/video/BV1434y1e7N4
Github地址: https://github.com/rutura/The-C-20-Masterclass-Source-Code
教程足足有 30 小时长,而且还是 udemy 教程的阉割版本,不过里面有第一章会教导如何使用
MSVCgccclang三种 C++ 编译器构建环境。
我 fork 了他的仓库加上我自己的 VSCode 配置 仓库地址: https://github.com/FXTD-ODYSSEY/The-C-20-Masterclass-Source-Code
默认 tasks 是配置了三中不同编译的选项,如果注释掉两个的话,那就可以直接在 VScode 实现 ctrl+shift+b 实现编译并运行。
教程里面主要 IDE 环境是使用 VScode 搭建的,可能会有人困惑,why not VS。
我很久以前开发 Maya C++ 就是使用 VS 进行开发的,说实话,IDE 隐藏了太多细节,一旦出错,反而是无头苍蝇,无从查起。 知乎回答
当然也同其他回答说得也对,用什么工具都无所谓,关键是懂得 C++ 的整个编译流程。
The Cherno C++
https://www.youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
https://www.bilibili.com/video/BV1gk4y1r7UH
游戏开发大佬推出的一系列编程课程。
parallel 101
后来非常偶然地,我翻到一个大佬 (小彭老师) 的课程
https://github.com/parallel101/course
https://www.bilibili.com/video/BV1fa411r7zp
这个课程用直播和录播的形式详细介绍了从 cmake 到 C++ 的使用。
而且老师年轻有为,能力很强,经验丰富。
原子之声
C++现代实用教程(一):基础主线(VSCODE) gitlab地址
C++现代实用教程(二):面向对象基础 gitlab地址
C++现代实用教程(三):面向对象之友元与继承 gitlab地址
C++现代实用教程(四):面向对象核心多态 gitlab地址
C++现代实用教程:智能指针 gitlab地址
C++现代实用教程: Namespace命名空间 gitlab地址
这位老师也很赞~
但是还没仔细看…
C++ 道法器术
https://www.bilibili.com/video/BV1pu411y7n1
https://www.bilibili.com/video/BV1RV4y1x7qH
C++ 是一门很复杂的语言,像我是从 Python 开始进阶编程的。
当我将 Python 很多用法摸透之后,进入到 Python 底层,发现 C++ 还很多底层的内容等待我去学习(:з」∠)
那上面的视频,比较系统地总结了 C++ 从入门到进阶的各个不同阶段地内容,学习 C++ 有很清晰的整体图谱。
当然视频里面其实是介绍作者推出的课程的~
个人剖析文章 01_C++ 道法器术.md
搭建运行环境
C++ 语言和 Python 运行方式有相当大的不同,
参考: https://smartkeyerror.com/Python-Virtual-Machine
编译 C++ 需要有 C++ 编译器来生成汇编代码(二进制机器码) ,不同的编译器有不同的优化策略,所以版本和编译器平台都会对生成的汇编有很大影响。
教程提供了 https://en.cppreference.com/w/cpp/compiler_support 这个网站。
可以看到不同平台编译器对各种 CPP 规范的支持情况,如果用了老版本就不能使用新版本的 C++ 写法
目前 C++ 也在不断演进,从古老的 C++98 到现在 C++11 C++14 C++17 C++20 以及后续即将推出的 C++23 C++26
目前主流编译器的最新版本都支持到 C++17 了。
编译器下载配置
市面上最主流的 C++ 编译器有
MSVCgccclang,其中MSVC是 windows 平台的,另外两个是可跨平台开发。
windows 下如何安装环境呢? 推荐使用 choco 进行安装
1  | Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))  | 
用管理员权限打开 powershell 然后输入上面的命令进行安装。
1  | ::安装 MSVC  | 
执行上面的命令可以安装相对应的环境到系统中。
需要注意的是 MSVC 需要打开 VS installer 配置 windows SDKC:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe


然后选择下载 Windows 10 SDK 再到右下角点击修改。
这样才能将 MSVC 编译器安装到电脑上。
使用 MSVC 进行编译,需要调用
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat脚本启动环境。
激活环境之后可以使用 cl.exe 来接链编译 C++ 代码。
而其他编译器默认安装完之后 choco 添加到 PATH 路径下了。
1  | C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat  | 
1  | g++ -g -std=c++20 main.exe main.cpp  | 
1  | clang -g -std=c++20 main.exe main.cpp  | 
使用上面的命令就可以实现 C++20 标准代码的编译。
如果你使用 Visual Studio 之类的 IDE,那背后其实也是调用编译器对 C++ 代码编译生成二进制机器码文件。
VScode 环境配置
有了上述的环境之后,只要运行命令就可以执行代码了。
开发工具比较推荐使用 VScode
个人体验了 VS 感觉过于笨重,而且隐藏了很多编译的细节,导致很多环节出错了不知道从何查起。
所以我推荐使用 VScode 编辑器作为入门,了解了基础再使用复杂的 IDE 才能事半功倍。
安装 VScode 之后,可以安装微软官方提供的 C++ 扩展
实际上 VScode 官方是比较推荐用tasks.json配置来管理编译 用launch.json来管理启动的。
但是这些配置对小白来说还是稍显复杂。
这里我推荐安装 Code Runner 插件

去到对应的代码就有启动图标,在右上角,点击一下默认会调用 gcc 编译并执行。

如果想要修改默认的执行命令,可以去修改 code runner 的配置

默认会有不同语言对应执行的命令,我们这里可以把 Cpp 执行的命令改成我们想要的样子即可。
比如我们想要改成 clang 编译也或者 MSVC 编译也是完全可以的。
MSVC 比较麻烦,需要先跑VsDevCmd.bat激活环境才能使用 cl 命令。
另外输入源可以改成通配符识别
*.cpp,这样多个文件只要都在一个目录里面都会一同编译,方便我们初学跑程序。
1  | "cpp": "cd $dir && g++ -g -std=c++20 *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt",  | 
另外在线网站 https://godbolt.org/ 内置了很多不用语言的编译器
可以在线编写代码去验证,也能很方便地查看编译出来的汇编语言。
没有本地环境的时候也可以用这个工具来跑代码进行验证。
C++ 入门
学习一门语言,是骡子是马总得遛 一遛才知道代码是否有问题。
所以只是看教程,脑内编译代码是不行的。
这里我用 C++ 入门会以 The-C-20-Masterclass-Source-Code
只要按照我上面的配置,就可以愉快地跑这个仓库任意路径的代码,并编译出可执行文件了~
如果你已经有编程基础,比如学过其他的编程语言,那么我更推荐直接看代码执行来学习,遇到不懂的部分再翻视频。
这样比起纯看看视频会更快上手。
另外为了方便能够查阅 cppreference.com cplusplus.com 等官方文档,可以快速跑里面的案例 Demo
我用 Python 做了个简单的爬虫,将不同的资料汇总到一起 REPO





