C++ 完整教程 (C++ Complete Tutorial)

本教程从零开始, 覆盖 C++ 从入门到精通的完整学习路径。包含基础教程(环境搭建+语法入门)、
深化教程(核心语言特性)、STL 容器、功能库和第三方库推荐。

每个章节配有底层原理剖析、实际案例, 以及可交互的选择题和判断题, 使用 Obsidian 可折叠答案格式, 点击即可查看解析。

学习路径:


C++ 教程结构

cpp教程/
├── cpp目录.md            ← 你在这里
├── cpp基础教程/          环境搭建 + 语法入门 (11 章)
├── cpp深化教程/          核心语言特性 (16 章)
├── 容器库/               STL 容器详解
│   ├── 序列容器/         vector, deque, list, string
│   ├── 关联容器/         set, map (红黑树)
│   ├── 无序容器/         unordered_set, unordered_map (哈希)
│   ├── 适配器/           stack, queue, priority_queue
│   └── 其他/             pair, bitset
├── cpp功能库/            C++ 标准库非容器部分
└── cpp第三方库/          推荐第三方库索引

推荐学习路线

cpp基础教程(01→11) → cpp深化教程(01→15) → 容器类 → cpp功能库 → cpp第三方库
        |                     |                     |
        ▼                     ▼                     ▼
   环境搭建+语法           OOP+模板+并发            STL容器使用

当你遇到底层问题时: C++ 的很多机制(指针、内存、虚表)需要 C 语言功底才能深入理解。
建议在学习 03_指针与引用04_动态内存 时, 同时参考 C语言教程 中的指针与内存章节, 两者互补。

当你需要算法知识时: DSA学习路线 提供了语言无关的数据结构与算法学习路径。


第零部分 — cpp基础教程 (Getting Started)

面向零基础读者。从环境搭建到语法入门。

#章节核心内容
0101_下载与安装Windows/macOS/Linux 编译器下载安装
0202_环境配置PATH 配置/编译选项/Makefile/CMake/GDB 调试
0303_编辑器与IDE推荐VSCode/Visual Studio/CLion/Vim/在线编译器
0404_第一个程序与输入输出Hello World/main 函数/cout/cin/格式化输出
0505_变量与数据类型int/float/double/char/bool/const/auto/类型转换
0606_运算符与表达式算术/关系/逻辑/位运算/优先级/三目运算符
0707_条件语句if/else/switch/短路求值/常见陷阱
0808_循环结构for/while/do-while/break/continue/range-for
0909_数组基础一维/二维数组/越界/函数参数/std::array
1010_函数基础声明定义/值传递/引用传递/重载/递归/inline
1111_字符串基础C 风格字符串/string 类/查找替换/数字转换

学习顺序: 01-03(环境) → 04-08(语法) → 09-11(进阶基础)


第一部分 — cpp深化教程 (Core Language)

面向已掌握基础语法的读者, 深入讲解 C++ 核心机制、内存模型、OOP、模板、并发、网络编程和标准库。
覆盖 C++11/14/17/20 现代特性。

章节索引

#章节核心内容
0101_命名空间namespace/using/名称修饰原理
0202_预处理器编译流程
0303_指针与引用指针/引用/智能指针/内存寻址/底层原理
0404_动态内存new/delete/智能指针/堆与栈
04.54.5_struct结构体struct/C 兼容/POD/数据结构节点
0505_面向对象(一)类与对象基础class/struct/构造/析构/拷贝/移动/this 底层
0606_面向对象(二)继承继承/vtable/多重继承/虚继承
0707_面向对象(三)多态与虚函数virtual/override/抽象类/RTTI
0808_面向对象(四)运算符重载运算符重载/类型转换/C++20 太空船
0909_函数模板模板/SFINAE/可变参数/concepts
1010_异常处理try/catch/throw/noexcept
1111_文件与流fstream/iostream/二进制读写
1212_信号处理signal/sigaction/信号屏蔽字
1313_多线程thread/mutex/atomic/future
1414_Web编程Socket/HTTP/WebSocket/RESTful
1515_C++标准库STL 六大组件/C++14/17/20 新特性

推荐阅读顺序

03_指针与引用 → 04_动态内存 → 01_命名空间 → 02_预处理器
  → 04.5_struct结构体 → 05_类与对象基础 → 06_继承 → 07_多态与虚函数
  → 08_运算符重载 → 09_函数模板 → 10_异常处理 → 11_文件与流
  → 12_信号处理 → 13_多线程 → 14_Web编程 → 15_C++标准库

注: 文件编号并非阅读顺序。以上路线按”底层认知递进”排列: 先理解”地址”和”内存”, 再进入 OOP。

C++ 与 C 的交叉引用

CPP 章节建议同步阅读的 C 内容
03_指针与引用[[../ISSUES
04_动态内存[[../ISSUES
05_类与对象基础[[../ISSUES
13_多线程[[../ISSUES

第二部分 — STL 容器类

每个容器章节: 底层结构 → 用法大全 → 实际案例 → 练习 → 洛谷题目

章节内容
pairstd::pair 键值对
[[容器库/序列容器/vectorvector]]
string.mdstd::string 字符序列
stack栈适配器 LIFO
queue队列适配器 FIFO
deque双端队列
priority_queue优先队列(堆)
list双向/单向链表
set有序集合(红黑树)
[[容器库/关联容器/mapmap]]
unordered_set无序集合(哈希)
unordered_map无序映射(哈希)
bitsetstd::bitset 位集

库参考

类型索引文件说明
容器库[[../ISSUES容器库索引]]
功能库[[../ISSUES功能库索引]]
第三方库[[../ISSUES第三方库索引]]

第三部分 — cpp功能库 (标准库非容器部分)

C++ 标准库不止容器。以下为核心功能库索引。

类别内容
字符串处理std::string, std::string_view, std::regex
输入输出iostream, fstream, stringstream, filesystem (C++17)
算法sort, find, binary_search, next_permutation
数值random, chrono, complex, ratio, numeric_limits
并发thread, mutex, condition_variable, atomic, future
内存unique_ptr, shared_ptr, weak_ptr, allocator
函数式function, bind, lambda, reference_wrapper

第四部分 — cpp第三方库推荐

领域推荐库说明
网络Boost.Asio, libcurl, cpp-httplib异步网络, HTTP 客户端
GUIQt, wxWidgets, imgui跨平台图形界面
游戏SDL2, SFML, raylib2D 游戏/多媒体
数据库sqlite3, SOCI, mysql-connector-cpp数据库连接
序列化protobuf, nlohmann/json, yaml-cpp数据格式
测试GoogleTest, Catch2, doctest单元测试框架
日志spdlog, glog高性能日志
加密OpenSSL, Crypto++加密和 SSL

配套资源

模块入口
学习路径[[../ISSUES
C 到 C++[[../ISSUES
数据结构与算法[[../ISSUES
C 语言教程[[../ISSUES
汇编基础[[../ISSUES
内核思想[[../ISSUES