C++目录
LearnCpp.com 是一个免费网站,致力于教你如何用现代 C++ 编程。本网站的课程将引导你完成编写、编译和调试 C++ 程序所需的所有步骤。无需任何编程经验,但各个级别的程序员都能从我们的最佳实践、技巧和见解中获益。
成为专家并非一朝一夕之功,但只要有点耐心,你终会达成目标。LearnCpp.com 将为你指明方向。
简介/入门指南
0.1 本教程介绍
0.2 程序和编程语言介绍
0.3 C/C++ 介绍
0.4 C++开发介绍
0.5 编译器、链接器和库的介绍
0.6 安装集成开发环境(IDE)
0.7 编译你的第一个程序
0.8 一些常见的 C++ 问题
0.9 配置编译器:构建配置
0.10 配置编译器:编译器扩展
0.11 配置编译器:警告和错误级别
0.12 配置编译器:选择语言标准
0.13 我的编译器使用的是哪种语言标准?
第一章 C++基础
1.1 程序的语句和结构
1.2 注解
1.3 对象和变量介绍
1.4 变量赋值与初始化
1.5 iostream 介绍:cout、cin 和 endl
1.6 未初始化的变量和未定义行为
1.7 关键词和命名标识符
1.8 空白和基本格式
1.9 字面量和运算符介绍
1.10 表达式介绍
1.11 开发你的第一个程序
1.x 第一章概要及测验
第二章 C++基础:函数和文件
2.1 函数介绍
2.2 函数返回值(返回值的函数)
2.3 Void函数(不返回值的函数)
2.4 函数形参和实参介绍
2.5 局部作用域介绍
2.6 函数为何有用,以及如何有效使用它们
2.7 前向声明与定义
2.8 包含多个代码文件的程序
2.9 命名冲突及命名空间介绍
2.10 预处理器介绍
2.11 头文件
2.12 头文件保护机制
2.13 如何设计你的第一个程序
2.x 第二章总结和测验
第三章 C++程序调试
3.1 语法和语义错误
3.2 调试过程
3.3 调试策略
3.4 基础调试策略
3.5 更多调试策略
3.6 使用集成调试器:单步执行
3.7 使用集成调试器:运行和断点
3.8 使用集成调试器:监视变量
3.9 使用集成调试器:调用栈
3.10 在问题出现之前发现它们
3.x 第三章总结和测验
第四章 基本数据类型
4.1 基本数据类型介绍
4.2 Void
4.3 对象大小和 sizeof 运算符
4.4 有符号整数
4.5 无符号整数以及其应避免使用的原因
4.6 固定宽度整数和 size_t
4.7 科学计数法介绍
4.8 浮点数
4.9 布尔值
4.10 if语句介绍
4.11 字符
4.12 类型转换和 static_cast 介绍
4.x 第四章总结和测验
第五章 常量和字符串
5.1 常量变量(命名常量)
5.2 字面量
5.3 数制(十进制、二进制、十六进制和八进制)
5.4 假设规则与编译时优化
5.5 常量表达式
5.6 constexpr 变量
5.7 std::string 介绍
5.8 std::string_view 介绍
5.9 std::string_view(第二部分)
5.x 第五章总结和测验
第六章 操作符
6.1 运算符优先级和结合性
6.2 算术运算符
6.3 余数和幂运算
6.4 递增/递减运算符及其副作用
6.5 逗号运算符
6.6 条件运算符
6.7 关系运算符和浮点数比较
6.8 逻辑运算符
6.x 第六章总结和测验
第O章 位操作(可选章节)
O.1 通过 std::bitset 进行位标志和位操作
O.2 位运算符
O.3 使用位运算符和位掩码进行位操作
O.4 二进制和十进制之间的整数转换
第七章 范围、持续时间和关联性
7.1 复合语句(代码块)
7.2 用户定义的命名空间和作用域解析运算符
7.3 局部变量
7.4 全局变量介绍
7.5 变量遮蔽(名称隐藏)
7.6 内部链接
7.7 外部链接和变量前向声明
7.8 为何(非常量)全局变量是邪恶的
7.9 内联函数和变量
7.10 在多个文件中共享全局常量(使用内联变量)
7.11 静态局部变量
7.12 作用域、存储期和链接总结
7.13 using声明和using指令
7.14 未命名和内联命名空间
7.x 第七章总结和测验
第八章 控制流
8.1 控制流介绍
8.2 if语句和代码块
8.3 常见的if语句问题
8.4 constexpr if语句
8.5 switch语句基础
8.6 switch语句的贯穿和作用域
8.7 goto 语句
8.8 循环和 while 语句介绍
8.9 do while 语句
8.10 for 语句
8.11 break和continue
8.12 halt(提前退出程序)
8.13 随机数生成介绍
8.14 使用梅森旋转算法生成随机数
8.15 全局随机数(Random.h)
8.x 第八章总结和测验
第九章 错误检测与处理
9.1 代码测试介绍
9.2 代码覆盖率
9.3 C++中常见的语义错误
9.4 检测和处理错误
9.5 std::cin 和处理无效输入
9.6 断言和静态断言
9.x 第九章总结及测验
第十章 类型转换、类型别名和类型推导
10.1 隐式类型转换
10.2 浮点数和整数提升
10.3 数值转换
10.4 窄化转换、列表初始化和 constexpr 初始化器
10.5 算术转换
10.6 显式类型转换(强制转换)和 static_cast
10.7 类型定义和类型别名
10.8 对使用 auto 关键字对对象进行类型推导
10.9 函数类型推导
10.x 第十章总结和测验
第十一章 函数重载和函数模板
11.1 函数重载介绍
11.2 函数重载的区分
11.3 函数重载解析和歧义匹配
11.4 删除函数
11.5 默认实参
11.6 函数模板
11.7 函数模板实例化
11.8 具有多个模板类型的函数模板
11.9 非类型模板形参
11.10 在多个文件中使用函数模板
11.x 第十一章总结和测验
第F章 Constexpr 函数
F.1 constexpr 函数
F.2 constextpr 函数(第 2 部分)
F.3 constexpr 函数(第 3 部分)和 consteval
F.4 constextpr 函数(第 4 部分)
F.x F 章总结和测验
第十二章 复合类型:引用和指针
12.1 复合数据类型介绍
12.2 值类别(左值和右值)
12.3 左值引用
12.4 常量左值引用
12.5 按左值引用传递
12.6 按常量左值引用传递
12.7 指针介绍
12.8 空指针
12.9 指针和常量
12.10 按地址传递
12.11 按地址传递(第二部分)
12.12 按引用返回和按地址返回
12.13 输入和输出形参
12.14 使用指针、引用和 const 进行类型推导
12.15 std::optional
12.x 第十二章总结和测验
第十三章 复合类型:枚举和结构
13.1 程序定义(用户定义)类型介绍
13.2 无作用域枚举
13.3 无作用域枚举器整型转换
13.4 枚举与字符串之间的转换
13.5 I/O 运算符重载介绍
13.6 作用域枚举(枚举类)
13.7 结构体、成员和成员选择简介
13.8 结构聚合初始化
13.9 默认成员初始化
13.10 传递和返回结构体
13.11 结构杂项
13.12 使用指针和引用进行成员选择
13.13 类模板
13.14 类模板参数推导(CTAD)和推导指南
13.15 别名模板
13.x 第十三章总结和测验
13.y 使用语言参考
第十四章 class介绍
14.1 面向对象编程介绍
14.2 类简介
14.3 成员函数
14.4 const类对象和const成员函数
14.5 共有和私有成员以及访问限定符
14.6 访问函数
14.7 返回对数据成员的引用的成员函数
14.8 数据隐藏(封装)的优势
14.9 构造函数介绍
14.10 构造函数成员初始化列表
14.11 默认构造函数和默认参数
14.12 委托构造函数
14.13 临时类对象
14.14 复制构造函数介绍
14.15 类初始化和复制省略
14.16 转换构造函数和显式关键字
14.17 Constexpr 聚合和类
14.x 第十四章总结和测验
第十五章 更多class信息
15.1 隐藏的“this”指针和成员函数链式调用
15.2 类和头文件
15.3 嵌套类型(成员类型)
15.4 析构函数介绍
15.5 带有成员函数的类模板
15.6 静态成员变量
15.7 静态成员函数
15.8 友元非成员函数
15.9 好友类和友元成员函数
15.10 引用限定符
15.x 第十五章总结和测验
第十六章 动态数组:std::vector
16.1 容器和数组介绍
16.2 std::vector 和 list 构造函数介绍
16.3 std::vector 和无符号长度及下标问题
16.4 传递 std::vector
16.5 返回 std::vector及移动语义介绍
16.6 数组和循环
16.7 数组、循环和符号挑战解决方案
16.8 基于范围的 for 循环(for-each)
16.9 使用枚举器进行数组索引和长度操作
16.10 std::vector 动态调整大小和容量
16.11 std::vector 和堆栈的行为
16.12 std::vector
16.x 第十六章总结和测验
第十七章 固定大小数组:std::array 和 C 风格数组
17.1 std::array 介绍
17.2 std::array 的长度和索引
17.3 传递和返回 std::array
17.4 std::array 类型及花括号省略
17.5 通过 std::reference_wrapper 实现引用数组
17.6 std::array 和枚举
17.7 C 风格数组介绍
17.8 C 风格数组衰减
17.9 指针运算和下标
17.10 C 风格字符串
17.11 C 风格字符串符号常量
17.12 多维 C 风格数组
17.13 多维 std::array
17.x 第十七章总结和测验
第十八章 迭代器和算法
18.1 使用选择排序对数组进行排序
18.2 迭代器介绍
18.3 标准库算法介绍
18.4 代码计时
第十九章 动态分配
19.1 使用 new 和 delete 进行动态内存分配
19.2 动态分配数组
19.3 析构函数
19.4 指针的指针和动态多维数组
19.5 空指针
第二十章 函数
20.1 函数指针
20.2 栈和堆
20.3 递归
20.4 命令行参数
20.5 省略号(以及为什么要避免使用省略号)
20.6 引入lambda 表达式(匿名函数)
20.7 Lambda 捕获
20.x 第20章总结和测验
第二十一章 运算符重载
21.1 运算符重载介绍
21.2 使用友元函数重载算术运算符
21.3 使用普通函数重载运算符
21.4 重载I/O操作符
21.5 使用成员函数重载运算符
21.6 重载一元运算符 +、- 和 !
21.7 重载比较运算符
21.8 重载递增和递减运算符
21.9 重载下标运算符
21.10 重载括号运算符
21.11 重载类型转换
21.12 重载赋值运算符
21.13 浅拷贝与深拷贝
21.14 运算符重载和函数模板
21.x 第二十一章概要与测验
21.y 第二十一章项目
第二十二章 移动语义和智能指针
22.1 智能指针和移动语义介绍
22.2 R 值引用
22.3 移动构造函数和移动赋值
22.4 std::move
22.5 std::unique_ptr
22.6 std::shared_ptr
22.7 std::shared_ptr 和 std::weak_ptr 的循环依赖问题
22.x 第二十二章总结和测验
第二十三章 对象关系
23.1 对象关系
23.2 组合
23.3 聚合
23.4 关联
23.5 依赖
23.6 容器类
23.7 std::initializer_list
23.x 第二十三章总结和测验
第二十四章 继承
24.1 继承介绍
24.2 C++中的基本继承
24.3 派生类的构造顺序
24.4 派生类的构造函数与初始化
24.5 继承和访问限定符
24.6 为派生类添加新功能
24.7 调用继承函数与覆盖行为
24.8 隐藏继承的功能
24.9 多重继承
24.x 第24章总结和测验
第二十五章 虚函数
25.1 指向派生对象基类的指针和引用
25.2 虚函数和多态性
25.3 覆盖和最终说明符,以及协变返回类型
25.4 虚析构函数、虚赋值和覆盖虚化
25.5 早期绑定和晚期绑定
25.6 虚表
25.7 纯虚函数、抽象基类和接口类
25.8 虚基类
25.9 对象切片
25.10 动态转化
25.11 使用operator<<打印继承类
25.x 第二十五章总结和测验
第二十六章 模板和类
26.1 模板类
26.2 模板非类型参数
26.3 函数模板特化
26.4 类模板特化
26.5 部分模板特化
26.6 指针的部分模板特化
26.x 第26章总结和测验
第二十七章 异常情况
27.1 异常情况的必要性
27.2 基本异常处理
27.3 异常、函数和堆栈展开
27.4 未捕获的异常和捕获所有异常的处理程序
27.5 异常、类和继承
27.6 重新抛出异常
27.7 函数 try 块
27.8 异常情况的风险和弊端
27.9 异常规范和 noexcept
27.10 std::move_if_noexcept
27.x 第27章总结和测验
第二十八章 输入和输出(I/O)
28.1 输入和输出 (I/O) 流
28.2 使用 istream 输入
28.3 使用 ostream 和 ios 输出
28.4 字符串流类
28.5 流状态和输入验证
28.6 基本文件 I/O
28.7 随机文件 I/O
附录A 杂项主题
A.1 静态库和动态库
A.2 在 Visual Studio 中使用库
A.3 在 Code::Blocks 中使用库
A.4 C++常见问题解答
附录B C++ 更新
B.1 C++11 简介
B.2 C++14 简介
B.3 C++17 简介
B.4 C++20 简介
B.5 C++23 简介
附录C 剧终
附录D 已弃用文章
21.1 标准库
21.2 STL容器概述
21.3 STL迭代器概述
21.4 STL算法概述
22.1 std::string 和 std::wstring
22.2 std::string 的构造和销毁
22.3 std::string 的长度和容量
22.4 std::string 字符访问和转换为 C 风格数组
22.5 std::string 赋值和交换
22.6 std::string 追加
22.7 std::string 插入

浙公网安备 33010602011771号