- 前言
- 第1章: C++介绍
- 1.1 程序与编程语言
- 1.2 C++ 程序结构
- 1.2.1 最简单的 C++ 程序
- 1.2.2 函数
- 1.2.3 语句
- 1.2.4 程序注释
- 1.2.5 Hello World 程序
- 1.2.6 标准输入输出库和cout
- 1.2.7 名字空间
- 1.2.8 字符串和字符
- 1.2.9 运算符与操作数
- 1.2.10 宏定义 #define
- 1.2.11 变量:命名的内存块
- 1.2.12 标准输入流对象 cin
- 1.2.13 用户定义类型
- 1.3 数和字符的表示
- 1.4 编译与执行 C++ 程序
- 习题
- 实验
- 第2章: 变量和类型
- 2.1 变量
- 2.1.1 变量的定义与初始化
- 2.1.2 auto 类型推断
- 2.1.3 typeid 运算符
- 2.1.4 const
- 2.1.5 decltype 类型推导
- 2.1.6 decltype(auto)
- 2.1.7 赋值运算符 =
- 2.1.8 标识符、关键字和字面量
- 2.2 数据类型
- 2.2.1 基本类型的分类
- 2.2.2 整数类型
- 2.2.3 字符类型(Unicode 相关)
- 2.2.4 浮点类型
- 2.2.5 void类型
- 2.2.6 bool 类型
- 2.2.7 sizeof 运算符
- 2.3 字面量
- 2.3.1. 整型字面量
- 2.3.2 浮点型字面量
- 2.3.3 字符字面量和字符串字面量
- 2.3.4 布尔字面量(Boolean Literals)
- 2.3.5 空指针字面量(Null Pointer Literal)
- 2.3.6 类型推导与字面量
- 2.3.7 C++20及以后的新特性
- 2.4 格式化输出
- 2.5 类型转换
- 2.6 类型别名
- 2.7 枚举类型
- 2.8 局部变量与全局变量、变量的作用域与生命期
- 习题
- 实验
- 第3章: 运算符
- 第4章: 语句
- 4.1 简单语句、复合语句和控制语句
- 4.2 条件语句
- 4.3 循环语句
- 4.3.1 while语句
- 4.3.2 break 语句
- 4.3.3 do-while语句
- 4.3.4 continue语句
- 4.3.5 for语句
- 4.3.6 范围 for 循环 (Range-based for loop)
- 4.4 跳转语句
- 4.5 项目实战: 猜数字游戏
- 4.6 项目实战: 控制台Pong游戏
- 习题
- 实验
- 第5章 复合类型:数组、指针和引用
- 5.1 引用 (References)
- 5.2. 指针 (Pointers)
- 5.2.1 指针类型 (Pointer Types)
- 空指针 (Null Pointers)
- 5.2.2 指针的其他运算
- 5.2.3 void* (无类型指针)
- 5.2.4 指针的指针
- 5.2.5 指针的引用
- 5.2.6 引用和指针的比较
- 5.3 数组
- 5.3.1. 数组的定义
- 5.3.2 下标运算符 [] 访问数组元素
- 5.3.3 数组相关限制与注意事项
- 5.3.4 复杂的数组声明
- 5.3.4 C风格字符串
- 5.3.5 指针访问数组
- 5.3.6 Range-based for 访问数组元素
- 5.3.7 多维数组
- 5.4 const 与指针、引用的结合
- 5.5 内存管理:栈与动态内存分配
- 5.6 实战:查找、排序
- 5.7 实战项目:学生成绩管理系统
- 习题
- 实验
- 第 6 章:函数
- 6.1 函数是命名的程序块
- 6.2 函数声明与定义
- 6.2.1 函数声明
- 6.2.2 函数定义
- 6.2.3 函数签名(Function Signature)
- 6.2.4 函数声明与定义的关系
- 6.2.5 函数声明与定义分开的实际应用:一个简单的工程项目示例
- 6.3 函数参数
- 6.4 返回值
- 6.4.1 返回值类型
- 6.4.2 返回语句的语法
- 6.4.3 返回值的类型转换
- 6.4.4 返回引用
- 6.4.5 返回指针
- 6.4.6 返回 const 值、const对象的引用和指针、const指针
- 6.4.7 返回值优化
- 总结
- 6.5 静态变量
- 6.6 函数重载
- 6.7 内联函数
- 6.7.1 什么是内联函数?
- 6.7.2 内联函数的工作原理
- 6.7.3 为什么使用内联函数?
- 6.7.4 内联函数的使用场景
- 6.7.5 注意事项与限制
- 6.7.6 内联函数与宏的比较
- 6.7.7 总结
- 6.8 constexpr 关键字
- 6.8.1 constexpr 变量
- 6.8.2 constexpr 函数
- 6.8.3 扩展:C++20 consteval 和 constinit)
- 6.8.4 constexpr、consteval、constinit 的优缺点与使用场景
- 6.9 递归函数:调用自身的函数
- 6.9.1 递归和递归函数
- 6.9.2 阶乘的递归函数
- 6.9.3 递归函数的基本结构
- 6.9.4 斐波那契数列
- 6.9.5 最大公约数
- 6.9.6 汉诺塔问题
- 6.9.7 快速排序算法
- 6.9.8 迷宫问题
- 6.9.9 小结
- 6.10 函数指针
- 6.10.1 计算器函数calculate
- 6.10.2 函数指针的定义和初始化
- 函数指针的初始化
- 6.10.3 通过函数指针调用函数
- 6.10.4 函数指针作为函数参数
- 6.10.5 函数指针数组
- 6.10.6 小结
- 6.11 Lambda 表达式
- 6.11.1 为什么需要 Lambda 表达式?
- 6.11.2 Lambda 表达式的基本形式和语法
- 6.11.3 Lambda 表达式的赋值
- 6.11.4 Lambda 表达式的参数和返回值
- 6.11.4 捕获外部变量
- 6.11.5 可变 Lambda(mutable)
- 6.11.6 初始化捕获(init capture)
- 6.11.7 Lambda 表达式的应用场景
- 6.11.8 小结
- 6.12 实战:二维字符图形库 ChGL
- 6.13 实战:基于ChGL的控制台游戏
- 习题
- 第7章: 函数模板
- 7.1 为什么需要函数模板?
- 7.2 函数模板的定义与实例化
- 7.3 显式指定模板参数与自动推断模板参数
- 7.4 非类型模板参数
- 7.5 模板模板参数
- 7.6 模板参数的默认值
- 7.7 返回类型推断
- 7.8 函数模板与重载
- 7.9 模板专门化
- 7.10 可变模板参数
- 7.10.1. 什么是可变模板参数?
- 7.10.2 参数包展开(Parameter Pack Expansion)
- 7.10.3 折叠表达式(Fold Expression)
- 特点:
- 7.10.3 递归模板处理
- 7.10.3 参数包展开、折叠表达式和递归模板处理的比较
- 7.10.5 编译期平方表生成器
- 习题
- 第8章: 类与对象
- 8.1 过程式编程:智能家居系统
- 8.2 面向对象编程:智能家居系统案例
- 8.3 类与对象:面向对象编程的基础
- 8.3.1 类的定义
- 8.3.2 定义类的对象(变量)
- 8.3.3 成员访问运算符 .
- 8.3.4 间接访问运算符->
- 8.3.5 stuct和class区别
- 8.3.6 添加成员函数:让对象拥有行为
- 8.3.7 this 指针
- 8.3.8 类对象的大小
- 8.4 构造函数
- 8.4.1 什么是构造函数?
- 8.4.2 初始化成员列表
- 8.4.3 初始化成员列表 vs 类内成员初始化器
- 8.4.4 拷贝构造函数
- 8.4.5 赋值运算符:operator=
- 8.4.6 深拷贝与浅拷贝
- 8.4.7 delete
- 8.4.8 隐式类型转换、explicit
- 8.4.9 类对象数组
- 8.4.10 委托构造函数
- 8.4.11 类体外定义成员函数和构造函数
- 8.4.12 头文件与源文件的分离
- 8.5 访问控制和接口
- 8.6 友元
- 8.7 const 对象、const 成员函数和 mutable 成员变量
- 8.8 析构函数
- 8.9 内联成员函数 (Inline Member Functions)
- 8.10 静态成员 (Static Members)
- 8.11 实战:线性表及应用
- 8.12 面向对象的控制台字符图形库ChGL
- 8.13 实战:面向对象游戏:基于链表的贪吃蛇游戏
- 8.14 总结
- 习题
- 第9章: 运算符重载
- 9.1 运算符重载的两种方式
- 9.2 运算符作为成员函数和外部函数重载的主要区别
- 9.3 赋值运算符=
- 9.4 下标运算符[]
- 9.5 输入输出运算符
- 9.6 比较运算符和<=> 运算符
- 9.6.1 作为成员函数的比较运算符
- 9.6.2 作为外部函数的比较运算符
- 9.6.3 重载其他比较运算符
- 9.6.4 <=> 运算符
- 9.6.5 C++20 中 <=> 和 == 的详细规则:
- 9.9.6 <=> 运算符的三种返回类型
- 9.7 函数调用运算符 ()
- 9.8 类型转换运算符
- 9.9 自增和自减运算符
- 9.10 可以重载的运算符
- 9.11 实战:矩阵
- 习题
- 第10章:继承与派生
- 10.1 继承与派生概述
- 10.2 类之间的关系:is-a 与 has-a
- 10.3 派生类的定义
- 10.4 成员的隐藏(Hide)
- 10.5 继承方式与访问控制
- 10.6 对象切割
- 10.7 向上类型转换与向下类型转换
- 10.8 派生类的构造函数、析构函数与拷贝构造函数
- 10.9 虚函数与多态
- 10.9.1 虚函数概述
- 10.9.2 虚函数的基本示例
- 10.9.3 虚函数的工作原理
- 10.9.4 虚析构函数:
- 10.9.5 编译时多态 vs 运行时多态
- 10.9.6 类型转换与 dynamic_cast
- 10.9.7 虚函数的一些语法规则
- 10.9.8 总结
- 10.10 多继承和虚基类
- 10.11 纯虚函数与抽象类
- 10.12 实战项目:公司员工管理系统
- 10.13 实战:仿``雷电战机''游戏
- 习题
- 实验
- 第11章: 类模板
- 第12章: 错误处理与异常处理
- 12.1 引言
- 12.2 传统错误处理机制
- 12.3 异常处理机制
- 12.4 异常处理的高级主题
- 12.5 异常安全与 RAII
- 12.5.1 异常安全级别
- 12.5.2 RAII(资源获取即初始化)
- 12.7 多线程中的异常处理
- 12.8 最佳实践与总结
- 12.8.1 异常处理的最佳实践
- 12.8.2 传统错误处理 vs. 异常处理
- 12.8.3 何时使用异常,何时使用错误码?
- 12.6 总结
- 习题
- 第13章: 移动语义
- 第14章: 内存管理
- 14.1. 手动内存管理的风险
- 14.2 RAII(资源获取即初始化)思想
- 14.3 智能指针
- 14.4 自定义删除器(Deleter)
- 14.5. 低级内存管理
- 14.6 自定义内存分配器与重载 operator new 和 operator delete
- 14.6.1 重载 operator new 和 operator delete 的意义
- 14.6.2 重载 operator new 和 operator delete 的基本方式
- 14.6.3. 重载 operator new 和 operator delete 的实际意义
- 14.6.4. 总结
- 14.7 本章总结
- 习题
- 第15章: C++标准库介绍
- 15.1 输入输出流库
- 15.1.1 C++的IO流库
- 15.1.2 格式化输入输出
- 15.1.3 非格式化输入输出
- 15.1.4 文件位置
- 15.1.5 流状态
- 15.1.6 管理输出缓冲区
- 15.1.7 文件输入输出
- 15.1.8 字符串流(String Streams)
- 15.2 容器
- 15.2.1 标准容器
- 15.2.2 序列容器(Sequence containers)
- 15.2.3 容器适配器(Container Adapters)
- 15.2.4 关联容器 (Associative Containers)
- 15.3 迭代器
- 15.4 算法
- 15.5 字符串
- 15.6 多线程与并发(Threading and Concurrency)
- 15.7 正则表达式(Regular Expressions)
- 15.7.1. 什么是正则表达式?
- 15.7.2. C++ 正则表达式基础
- 15.7.3. 进阶匹配:查找和提取
- 15.7.4. 替换文本:std::regex_replace
- 15.7.5. 正则表达式常见模式
- 15.7.6. 总结
- 15.8 内存管理(Memory Management)
- 15.8.1 引言:现代 C++ 的内存管理理念
- 15.8.2 RAII(资源获取即初始化)
- 15.8.3 智能指针:自动管理动态内存
- 15.8.4 低级内存管理工具
- 15.8.5 并发环境下的内存管理
- 15.8.6 总结
- 习题
- 第16章: 元编程
- 16.1 模板元编程(TMP)
- 16.2 类型traits(Type Traits)
- 16.3 SFINAE
- 16.4. constexpr
- 16.5 应用实例
- 16.5.1 静态断言与编译期检查
- 16.5.2 变长模板参数处理
- 16.5.3 静态多态 (Static Polymorphism) - CRTP (Curiously Recurring Template Pattern)
- 16.5.4 编译时字符串生成
- 16.6 元编程的优缺点
- 16.7总结
- 习题
- 参考文献
现代C++编程实战
从入门到应用
驾驭现代C++,探索高性能编程的无限可能!
C++ 曾被誉为“性能之王”,它支撑着操作系统、游戏引擎、人工智能、高性能计算等关键领域。但随着 C++11、C++17、C++20 的演进,现代 C++ 已焕发新生,让编程更简洁、更安全、更高效!
本书跳过过时的 C++ 语法,专注于现代 C++ 的核心特性——智能指针、Lambda 表达式、模板编程、并发控制……无论你是编程新手,还是希望提升技能的开发者,都能在本书中找到清晰的讲解、直观的示例,以及贴近实际的项目案例。
深入浅出,理论结合实践,让 C++ 学习不再艰难!
? 直击现代 C++ 标准:聚焦 C++11-C++23,摒弃陈旧语法,专注实战应用。
? 从零开始,循序渐进:简洁示例+详细解析,助你快速掌握关键概念。
?️ 贴近实际的项目案例:涵盖游戏开发、数据结构、AI 计算,理论与实战并行。
? 适合各层次读者:无论你是初学者,还是有经验的开发者,都能受益匪浅。
? 翻开本书,开启你的现代 C++ 之旅!
The author is letting you choose the price you pay for this book!
Buying multiple copies for your team? See below for a discount!
驾驭现代C++,探索高性能编程的无限可能!
C++ 曾被誉为“性能之王”,它支撑着操作系统、游戏引擎、人工智能、高性能计算等关键领域。但随着 C++11、C++17、C++20 的演进,现代 C++ 已焕发新生,让编程更简洁、更安全、更高效!
本书跳过过时的 C++ 语法,专注于现代 C++ 的核心特性——智能指针、Lambda 表达式、模板编程、并发控制……无论你是编程新手,还是希望提升技能的开发者,都能在本书中找到清晰的讲解、直观的示例,以及贴近实际的项目案例。
深入浅出,理论结合实践,让 C++ 学习不再艰难!
? 直击现代 C++ 标准:聚焦 C++11-C++23,摒弃陈旧语法,专注实战应用。
? 从零开始,循序渐进:简洁示例+详细解析,助你快速掌握关键概念。
?️ 贴近实际的项目案例:涵盖游戏开发、数据 结构、AI 计算,理论与实战并行。
? 适合各层次读者:无论你是初学者,还是有经验的开发者,都能受益匪浅。
? 翻开本书,开启你的现代 C++ 之旅!
About
About the Book
现代 C++ 编程实战:从入门到应用》 旨在帮助读者掌握 C++ 的最新特性,并通过实践案例提升编程能力。本书不同于传统 C++ 教材,直接基于 C++11 及更新的标准,避免过时语法,注重实用性。
适合人群
- C++ 初学者,希望从现代 C++ 入门,不受过时语法困扰
- 有编程经验的开发者,想高效掌握 C++11 及更新特性
- 关注性能优化、系统编程、游戏开发的工程师
书籍特色
✅ 聚焦现代 C++:直接讲解 C++11 - C++23 特性,简化学习路径
✅ 简洁易懂:避免冗长理论,结合直观示例,快速上手
✅ 实战驱动:涵盖游戏开发、数据结构、AI 编程等真实案例
✅ 行业导向:关注 C++ 在高性能计算、嵌入式、金融等领域的应用
无论你是初学者,还是希望提升 C++ 技能的开发者,本书都将帮助你掌握现代 C++,并在实际项目中灵活运用。
Price
Pick Your Price...
Minimum price
$11.90
$29.00
You pay
$29.00Author earns
$23.20Team Discounts
Team Discounts
Get a team discount on this book!
Up to 4 members
- Minimum price
- $36.00
- Suggested price
- $72.00
Up to 5 members
- Minimum price
- $40.00
- Suggested price
- $116.00
Up to 10 members
- Minimum price
- $70.00
- Suggested price
- $203.00
Up to 15 members
- Minimum price
- $80.00
- Suggested price
- $290.00
Up to 25 members
- Minimum price
- $125.00
- Suggested price
- $435.00
Author
About the Author
Contents
Table of Contents
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them
Write and Publish on Leanpub
You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!
Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.
Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.