LearnCPP CN
Search
Search
Chapters
MOC
翻译约定
01-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++基础
02-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 - 小结与测试 - 函数与文件
03-调试 C++ 程序
3.1 - 语法和语义错误
3.2 - 代码调试步骤
3.3 - 代码调试策略
3.4 — 基本代码调试技术
3.5 - 更多代码调试技术
3.6 - 使用集成调试器之单步调试
3.7 - 使用集成调试器之运行和断点
3.8 - 使用集成调试器之监控变量
3.9 - 使用集成调试器之调用栈
3.10 - 在问题发生前发现问题
3.x - 小结与测试 - 代码调试
04-基础数据类型
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.13 - const 变量和符号常量
4.14 - 编译时常量、常量表达式和 constexpr
4.15 - 字面量
4.16 - 数值系统(十进制、二进制、十六进制和八进制)
4.17 - std::string 简介
4.18 - std::string_view 简介
4.x - 小结与测试 - 基本数据类型
7-2-if-statements-and-blocks-7-2-if-语句和语句块
05-运算符
5.1 - 运算符优先级和结合律
5.2 - 数学运算符
5.3 - 求模和指数运算
5.4 - 自增自减运算符及其副作用
5.5 - 逗号和条件运算符
5.6 - 关系运算符和浮点数比较
5.7 - 逻辑运算符
5.x - 小结与测试 - 运算符
06-作用域、生命周期和链接
6.1 - 复合语句(语句块)
6.2 - 用户定义命名空间和作用域解析运算符
6.3 - 局部变量
6.4 - 全局变量
6.5 - 变量遮蔽
6.6 - 内部链接
6.7 - 外部链接和变量前向声明
6.8 - 为什么非 const 全局变量是魔鬼
6.9 - 使用 inline 变量共享全局常量
6.10 - 静态局部变量
6.11 - 作用域和链接小结
6.12 - using 声明和 using 指令
6.13 - 内联函数
6.14 - Constexpr 和 consteval 函数
6.15 - 未命名和内联命名空间
6.x - 小结与测试 - 作用域、持续时间和链接
07-控制流和错误处理
7.1 - 控制流
7.2 - if 语句和语句块
7.3 - 常见的 if 语句错误
7.4 - switch 语句基础
7.5 - switch fallthrough属性和作用域
7.6 - goto 语句
7.7 - 循环和 while 语句
7.8 - do-while 语句
7.9 - for 语句
7.10 - break 和 continue
7.11 - 挂起(提前结束程序)
7.12 - 代码测试
7.13 - 代码覆盖率
7.14 - C++ 中常见的语义错误
7.15 - 发现错误和处理错误
7.16 - std::in 和输入错误处理
7.17 - 断言和 static_assert
7.18 - 随机数生成器简介
7.19 - 使用 Mersenne Twister 生成随机数
7.x - 小结与测试 - 控制流和错误处理
08-类型转换和函数重载
8.1 - 隐式类型转换
8.2 - 浮点数和整型提升
8.3 - 数值转换
8.4 - 算术转换
8.5 - 显式类型转换和static_cast
8.6 - typedef 和类型别名
8.7 - 使用 auto 关键字进行类型推断
8.8 - 函数的类型推断
8.9 - 函数重载
8.10 - 重载函数的区分
8.11 - 函数重载解析和不明确匹配
8.12 - 默认参数
8.13 - 函数模板
8.14 - 函数模板的实例化
8.15 - 具有多种类型的函数模板
8.x - 小结与测试 - 类型转换和函数重载
09-复合类型-引用和指针
9.1 - 复合数据类型
9.2 - 值的分类(左值和右值)
9.3 - 左值引用
9.4 - const类型的左值引用
9.5 - 传递左值引用
9.6 - 指针简介
9.7 - 空指针
9.8 - 指针和const
9.9 - 按地址传递
9.10 - 按地址传递 Part2
9.11 - 按引用返回和按地址返回
9.12 - 指针、引用和const的类型推断
9.x - 小结与测试 - 引用和指针
10-复合类型-枚举和结构体
10.1 - 程序定义类型简介
10.2 - 无作用域枚举类型
10.3 - 限定作用域枚举类型的输入输出
10.4 - 限定作用域枚举(枚举类)
10.5 - 结构体、成员和成员选择
10.6 - 结构体的聚合初始化
10.7 - 默认成员初始化
10.8 - 结构体传递及其他
10.9 - 基于指针和引用的成员选择
10.10 - 类模板
10.11 - 类模板参数推断CTAD
10.x - 小结与测试 - 枚举和结构体
10.y - 学会使用C++参考手册
11-数组,字符串和动态内存分配
11.1 - 数组(第一部分)
11.2 - 数组(第二部分)
11.3 - 数组和循环
11.4 - 数组排序之选择排序
11.5 - 多维数组
11.6 - C 语言风格字符串
11.7 - std::string_view(第二部分)
11.8 - 指针和数组
11.9 - 指针运算和数组索引
11.10 - C 风格字符串符号常量
11.11 - 使用 new 和 delete 进行动态内存分配
11.12 - 动态分配数组
11.13 - for-each 循环
11.14 — void 指针
11.15 — 指向指针的指针和多维数组
11.16 — 固定数组 std::array 简介
11.17 — 动态数组 std::vector 简介
11.18 — 迭代器简介
11.19 — 标准库算法简介
11.x - 小结与测试 - 数组、字符串和动态分配
12-函数
12.1 - 函数指针
12.2 - 栈和堆
12.3 - std::vector的容量和类栈行为
12.4 - 递归
12.5 - 命令行参数
12.6 - 省略号以及为什么要避免使用它
12.7 - lambda表达式简介(匿名函数)
12.8 - lambda 闭包
12.x - 小结与测试 - 函数
13-面向对象编程基础
13.1 - 欢迎来到面向对象的世界
13.2 - 类和类成员
13.3 - 访问修饰符 public 和 private
13.4 - 成员访问函数与封装
13.5 - 构造函数
13.6 - 构造函数成员初始化值列表
13.7 - 非静态成员初始化
13.8 - 重叠和委托构造函数
13.9 - 析构函数
13.10 - 隐藏的this指针
13.11 - 类代码和头文件
13.12 - const 对象和成员函数
13.13 - 静态成员变量
13.14 - 静态成员函数
13.15 - 友元函数和友元类
13.16 - 匿名对象
13.17 - 类中的嵌套类型
13.18 - 对程序进行计时
13.x - 小结与测试 - 面向对象基础
14-操作符重载
14.1 - 运算符重载简介
14.2 - 使用友元重载算数运算符
14.3 - 使用普通函数重载运算符
14.4 - 重载输入输出运算符
14.5 - 使用成员函数重载运算符
14.6 - 重载一元运算符+,- 和 !
14.7 - 重载比较运算符
14.8 - 重载递增递减运算符
14.9 - 重载下标运算符
14.10 - 重载括号运算符
14.11 - 重载类型转换操作符
14.12 - 拷贝构造函数
14.13 - 拷贝初始化
14.14 - 转换构造函数与explicit和delete关键字
14.15 - 重载赋值运算符
14.16 - 浅拷贝和深拷贝
14.17 - 重载运算符和函数模板
14.x - 小结与测试 - 运算符重载
16-对象关系简介
16.1 - 对象关系
16.2 - 组合关系
16.3 - 聚合关系
16.4 - 关联关系
16.5 - 依赖关系
16.6 - 容器类
16.7 - std::initializer_list
16.x - 小结与测试 - 对象关系
17-继承
17.1 - 继承简介
17.2 - C++继承基础
17.3 - 派生类的构造顺序
17.4 - 派生类的构造和初始化
17.5 - 继承和访问说明符
17.6 - 为派生类添加新功能
17.7 - 调用继承函数和重写
17.8 - 隐藏继承的函数
17.9 - 多重继承
17.x - 小结与测试 - 继承
18-虚函数
18.1 - 基类的指针和引用
18.2 - 虚函数和多态
18.3 - override、final标识符以及协变返回类型
18.4 - 虚构造函数、虚赋值和重载虚拟化
18.5 - 早期绑定和后期绑定
18.6 - 虚函数表
18.7 - 纯虚函数,抽象基类和接口类
18.8 - 虚基类
18.9 - 对象切片
18.10 - 动态类型转换
18.11 - 使用 << 运算符打印继承类
18.x - 小结与测试 - 虚函数
19-模板和类
19.x - 小结与测试 - 模板和类
20-异常
20.x - 小结与测试 - 异常
20.4
21-STL
21.1 - 标准库
21.2 - STL容器
21.3 - STL迭代器
21.4 - STL算法
22-std 字符串
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 插入
23-输入输出
23.1 - 输入输出流
23.2 - 使用istream处理输入
23.3 - 使用ostream和ios处理输出
23.4 - 用于字符串的 stream 类
23.5 - 流状态和输入验证
23.6 - 基本文件输入输出
23.7 - 随机文件输入输出
A-其他话题
A.1 - 静态库和动态库
A.2 - 在visual studio中使用库
A.3 - 在Code Blocks中使用库
A.4 — C++ FAQ
B-C++标准更新
B.1 - C++11
B.2 - C++14
B.3 - C++17
B.4 - C++20
M-move 和智能指针
M.1 - 智能指针和移动语义简介
M.2 - 右值引用
M.3 - 移动构造函数和移动赋值
M.4 - std::move
M.5 - std::move_if_noexcept
M.6 — std::unique_ptr
M.7 — std::shared_ptr
M.8 - 智能指针带来的循环依赖问题
M.x - 小结与测试 - 移动和智能指针
O1-位运算
O.1 - bit标记和通过std::bitset操作bit
O.2 - 位运算符
O.3 - 使用位运算符和掩码操作位
O.4 - 二进制和十进制转换
词汇表
缩写函数模板
抽象类
抽象
成员访问函数
成员访问修饰符
取地址操作符 &
聚合数据类型
聚合初始化
聚合
不明确匹配
匿名对象
实参
元数
关联
关联容器
自动内存分配
自动存储持续时间
基类
绑定
位
bitwise-and
按位或
bss段
字节
C 语言风格的类型转换
调用栈
可调用对象
回调函数
子类
类实例
类模板
类模板实参推断
类类型
闭包
代码段
编译时
编译器
组合类型
Composition
const 类型转换
const 成员函数
常量指针
常量表达式
构造函数
容器适配器
容器类
转换构造函数
拷贝赋值运算符
拷贝构造函数
拷贝构造函数
拷贝初始化
拷贝语义
copy-swap习语
协变返回值类型
悬垂
数据段
声明
深拷贝
默认构造函数
默认初始化
默认成员初始化值
定义
委托构造函数
依赖
解引用运算符
派生类
指定初始化
析构函数
直接初始化
向下转换
笨指针
动态数组
动态类型转换
动态存储持续时间
动态初始化
动态内存分配
早期绑定
封装
枚举类
求值
异常安全问题
显式类型转换
表达式参数
表达式类型
外部链接
外部变量
提取运算符
贯穿属性
文件作用域
固定数组
格式组
前向声明
缝合怪对象
友元类
友元函数
函数实例
函数字面量
函数指针
函数原型
函数模板
函数模板实例化
泛型算法
全局变量
离开作用域
头文件防范
堆
标识符(identifier)
身份特征
即时函数
隐式构造函数
隐式对象
隐式类型转换
继承
初始化
初始化值
初始化值列表
内联函数
内联命名空间
内联变量
输入操纵器
插入运算符
实例
实例化
指令
整型类型
接口类
内部链接
内部变量
遍历
迭代器
匿名函数
后期绑定
链接
链接属性
链接器(linker)
类别赋值运算符
列表构造函数
列表初始化
字面量
局部变量
左值
左值引用
宏
成员访问运算符
成员函数
成员初始化值列表
成员选择运算符
成员类型
成员变量
成员依次赋值
成员依次拷贝
成员依次初始化
内存泄漏
mixin
移动赋值运算符
移动构造函数
移动语义
名称修饰
具名类型转换
命名空间
缩窄转换
非静态成员初始化
数值转换
数值提升
对象
对象组合
对象类型的宏
对象切片
差一错误
单一定义规则(one-definition-rule)
操作数
运算符
可选参数
超出作用域
输出操纵器
重载
重载解析
重写
形参
父类
按地址传递
按引用传递
按值传递
占位符类型
指向常量的指针
多态
预处理器
预处理器指令
私有继承
私有成员
受保护继承
受保护成员
公开继承
公有成员
纯声明(pure-declaration)
纯虚函数
限定符
quiz
资源获取即初始化(RAII)
随机访问内存
基于范围的for循环
原始指针
重构
引用容器
反身关联
重新解释类型转换
按地址返回
按引用返回
按值返回
返回值类型推断
舍入误差
运行时类型信息(RTTI)
运行时
右值
右值引用
指针缩放
作用域
作用域解析运算符
有作用域枚举
内存段
哨兵
顺序容器
变量遮蔽
浅拷贝
副作用
签名
智能指针
智能指针类
蛇形命名法
栈
栈帧
堆栈溢出
标准流
语句
静态类型转换
静态初始化
静态成员函数
静态成员变量
静态内存分配
静态存储持续时间
静态变量
存储持续时间
强异常保证
结构体填充
打桩
下标
超类
符号常量
symbolic-constants-符号常量
语法
tabledata
类模板特化
模板参数声明
模板特化
模板类型参数
菱形继承问题
间接包含
翻译
简单转换
类型别名
类型转换
类型推断
类型定义
类型推断
类型安全
类型签名
typeid 运算符
未定义行为
统一初始化
匿名命名空间
无作用域枚举类型
向上转换
using 声明
using 指令
值类型
值容器
值初始化
值保留
虚基类
虚析构函数
虚函数
虚表
void 指针
野指针
字长
0初始化
括号初始化
Home
❯
词汇表
❯
外部链接
外部链接
词汇表
external-linkage
Backlinks
6.6 - 内部链接
6.7 - 外部链接和变量前向声明
6.x - 小结与测试 - 作用域、持续时间和链接