目录
第一篇:基石篇 —— 万丈高楼平地起
第一章:开天辟地 —— 与C++的第一次亲密接触
- 1.1. 编程之道:从结绳记事到人工智能
- 1.2. 为何是C++:性能、控制力与抽象能力的完美结合
- 1.3. C++简史与哲学:从C的务实到C++的演化
- 1.4. 搭建你的“道场”:编译器、IDE与构建工具的辨析与选择
- 1.5. 第一个程序:
Hello, World!
- 1.6. 基本语法元素:变量、常量、字面量
- 1.7. 基础数据类型:整型、浮点型、字符、布尔
- 1.8. 运算符与表达式:算术、关系、逻辑、位运算
第二章:流程与结构 —— 构建程序的筋骨
- 2.1. 程序的三大结构:顺序、选择、循环的哲学与实践
- 2.2. 深入选择:
if-else,
switch-case
的最佳实践 - 2.3. 深入循环:
for
,while
,do-while
的适用场景 - 2.4. 函数:模块化的艺术:降低复杂度的第一法则
- 2.5. 函数精讲:定义、声明、调用,参数传递的底层机制与抉择。
- 2.6. 函数重载:一种静态多态的体现
- 2.7. 作用域与生命周期:局部变量、全局变量、静态变量的“生存空间”与“轮回”
- 2.8. 命名空间:在广阔的编程世界中避免“名相”冲突的智慧
- 2.9. 编译模型初探:头文件(
.h
/.hpp
)与源文件(.cpp
)的分离与协作
第二篇:核心篇 —— 深入C++的殿堂
第三章:指针与内存 —— 掌握“存在”的本质
- 3.1. 计算机内存模型:虚拟内存、物理内存
- 3.2. 内存的“四维空间”:栈、堆、静态区、代码区
- 3.3. 指针:间接的力量:指针的本质
- 3.4. 数组与指针的“纠缠”:数组名作为指针,指针与数组的遍历
- 3.5. 动态内存管理:内存泄漏、野指针、悬垂指针的“业障”与规避之道
- 3.6. 引用:更安全的别名:引用与指针的思辨
- 3.7.
const
的修行:const
修饰变量、指针、引用、函数参数和返回值
第四章:面向对象(上)—— 封装与抽象
- 4.1. 从
struct
到class
:从C的数据聚合到C++的数据与行为的统一 - 4.2. 封装:构建坚固的“结界”:
public
,protected
,private
的访问控制哲学 - 4.3. 对象的生与死:构造函数(默认、带参、拷贝、移动)与析构函数
- 4.4. 构造函数精讲:初始化列表、
explicit
关键字、委托构造 - 4.5.
this
指针:每个对象认识“自我”的通道 - 4.6.
static
成员:属于“类”而非“对象”的共享智慧 - 4.7. 友元(
friend
):在严格的封装体系中打开一扇可控的“方便之门” - 4.8. RAII范式:资源获取即初始化,C++管理资源的核心思想
第五章:面向对象(下)—— 继承与多态
- 5.1. 继承:智慧的传承与演化:
is-a
关系,基类与派生类。 - 5.2. 继承方式:
public
,protected
,private
继承的场景与意义 - 5.3. 派生类的构造与析构:调用链与顺序
- 5.4. 多态:万千化身,同一心法:虚函数与动态绑定
- 5.5. 虚函数表(vtable)探秘:多态的底层实现机制
- 5.6. 纯虚函数与抽象类:定义接口规范,强制派生类实现
- 5.7. 虚析构函数:在多态体系中正确释放资源的唯一途径
- 5.8. 多重继承与菱形继承:带来的能力与“诅咒”,虚继承的解决方案
- 5.9. 类型转换的“神通”与风险:
*_cast
的正确用法
第三篇:进阶篇 —— 驾驭现代C++的神力
第六章:标准模板库(STL)—— 巨人的遗产
- 6.1. STL哲学:泛型编程思想,容器、算法、迭代器的分离与协作
- 6.2. 序列容器:内部实现与性能权衡
- 6.3. 关联容器:
std::map
,std::set
,std::multimap
,std::multiset
- 6.4. 无序关联容器:
std::unordered_map
,std::unordered_set
- 6.5. 迭代器:STL的“通用指针”,五种迭代器类型及其能力
- 6.6. STL算法:非修改性序列操作、修改性序列操作、排序、数值算法等
- 6.7. 函数对象(Functor)与Lambda表达式:让算法更灵活的“即兴智慧”
第七章:现代C++特性(上)—— 语法糖与效率革命
- 7.1. 简化编码:
auto
类型推导、基于范围的for
循环、nullptr
、列表初始化 - 7.2. 右值引用与移动语义:深刻理解“资源所有权”的转移,
std::move
的本质 - 7.3. 完美转发(
std::forward
):在泛型编程中保持参数的值类别 - 7.4. 智能指针:实现自动化、异常安全的内存管理
- 7.5. 异常处理:
try-catch
块,noexcept
规范,异常安全的三种级别
第八章:现代C++特性(下)—— 泛型与并发
- 8.1. 模板元编程(TMP)入门:
template
的深度探索,编译期计算,type_traits
- 8.2. 可变参数模板(Variadic Templates):处理任意数量的模板参数
- 8.3. C++并发编程:
std::thread
,std::mutex
与锁 - 8.4. 异步编程:
std::async
,std::future
,std::promise
- 8.5. 原子操作(
std::atomic
):无锁编程的基础 - 8.6. C++20及以后前瞻:概念、范围、协程、模块
第四篇:工程篇 —— 知行合一,善用其器
第九章:工程化与工具链
- 9.1. 超越IDE:深入理解编译器命令行选项、链接器工作原理
- 9.2. 调试器大法:GDB/LLDB高级技巧
- 9.3. 现代化构建系统:精通CMake,管理复杂的项目依赖与跨平台编译
- 9.4. 包管理器:vcpkg/Conan的使用,告别手动编译依赖库
- 9.5. 版本控制:Git的核心概念与团队协作流
- 9.6. 持续集成(CI):使用GitHub Actions/GitLab CI自动化测试与构建
- 9.7. 单元测试与代码质量:使用GTest/Catch2编写可维护的测试用例,了解代码覆盖率
第十章:性能分析与优化
- 10.1. 优化的哲学:过早优化是万恶之源,用数据说话
- 10.2. 性能剖析工具(Profiler):gprof, perf, Valgrind (Callgrind), Intel VTune的使用
- 10.3. CPU缓存优化:理解Cache Line,提高数据局部性,避免伪共享
- 10.4. 内存优化:减少动态内存分配,使用内存池、Arena分配器
- 10.5. 算法与数据结构优化:时间复杂度与空间复杂度的权衡
- 10.6. 编译器优化:了解编译器的优化选项(O1, O2, O3, Ofast)及其影响
第五篇:实战篇 —— 执掌虚拟世界
第十一章:游戏服务器开发导论
- 11.1. 游戏开发技术栈概览:客户端(Unity/UE)与服务器(C++)的协作
- 11.2. 为何游戏服务器偏爱C++:对性能、内存、并发的极致追求
- 11.3. 游戏服务器架构演进史:从单服、分区分服到全球同服(MMO)架构
- 11.4. 本篇章技术目标:我们将构建一个怎样的服务器?
第十二章:网络层构建 —— 连接现实与虚拟的桥梁
- 12.1. 网络编程基础:TCP/UDP协议辨析,Socket编程回顾
- 12.2. 高性能I/O模型:select/poll/epoll(Linux)/IOCP(Windows)的原理与选型
- 12.3. 开源网络库的应用:以
Asio
为例,构建异步、事件驱动的网络框架 - 12.4. 协议设计与序列化:使用
Protobuf
定义通信协议,解决粘包、分包问题 - 12.5. 连接管理与心跳机制:设计健壮的玩家会话管理,处理网络抖动与断线重连
第十三章:并发模型与核心循环
- 13.1. 游戏服务器的主循环(Main Loop):驱动整个世界的心跳
- 13.2. 线程模型设计:单线程、多线程、Actor模型的比较与选择
- 13.3. 线程安全的数据结构:无锁队列、线程局部存储(TLS)的应用
- 13.4. 任务调度与协程:使用C++20协程或Boost.Coroutine简化异步逻辑
第十四章:游戏世界的核心玩法实现
- 14.1. 玩家管理:角色创建、登录、数据加载与存档
- 14.2. 场景与AOI:使用九宫格、十字链表或灯塔等算法高效管理玩家视野
- 14.3. 状态同步技术:深入探讨帧同步与状态同步的实现细节、优缺点与适用场景
- 14.4. 战斗系统设计:技能系统、Buff系统、伤害计算、战斗状态机
- 14.5. 游戏数据库交互:与MySQL/PostgreSQL交互,使用Redis作为缓存
第十五章:性能与可扩展性
- 15.1. 性能热点定位:针对游戏逻辑的专项性能分析
- 15.2. 内存管理优化:对象池、内存池的设计与实现
- 15.3. 分布式架构初探:将单体服务器拆分为网关、逻辑、场景、数据库等多个服务
- 15.4. 部署与运维:Docker容器化部署,日志收集与监控,热更新的挑战与方案
第六篇:展望篇 —— 登高望远,持续精进
第十六章:C++生态与社区
- 16.1. 必知第三方库:Boost、Qt、gRPC等
- 16.2. 标准委员会(WG21):关注C++的演进,阅读提案,理解语言设计的权衡
- 16.3. 开源社区与自我成长:阅读大型开源项目源码及贡献代码
第十七章:编程的“无招胜有招”
- 17.1. 设计模式精粹:超越具体语言的23种经典设计模式的C++实现与思辨
- 17.2. 软件架构设计:从单体到微服务,领域驱动设计(DDD)思想
- 17.3. 代码之外:沟通、协作、项目管理、领域知识的重要性
- 17.4. 终身学习之道:保持好奇,拥抱变化,方能得大自在