乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • C++ 学习路径
  • 第1章 C++概述与开发环境

    • C++ 语言概述与编译模型
    • 第一个 C++ 程序与规范
    • 开发环境配置
    • 预处理指令详解
  • 第2章 基本语法与类型系统

    • 变量与基本类型
    • 类型转换
    • 枚举类型
    • 引用与指针
    • 数组与 stdarray
    • 字符串与原始字符串字面量
    • const 与 constexpr
    • nullptr 与空指针
    • 类型推导 auto 与 decltype
    • 基于范围的 for 循环
    • 值类别全面解析
    • char16_t 与 char32_t
    • static_assert 编译期断言
  • 第3章 函数与重载

    • 函数声明与定义
    • 函数重载
    • 默认参数与内联函数
    • Lambda 表达式
    • 函数对象与 stdfunction
    • 后置返回类型与 noexcept
  • 第4章 类与对象

    • 类的基本定义
    • 构造函数与析构函数
    • 拷贝控制
    • 移动构造函数与移动赋值
    • 列表初始化与类内初始化器
    • 静态成员与嵌套类
    • 友元
    • =default 与 =delete
  • 第5章 继承与多态

    • 继承基础
    • 虚函数与多态
    • 虚函数表与动态绑定原理
    • 虚析构函数
    • 抽象类与纯虚函数
    • 多重继承与虚继承
    • 继承构造函数
  • 第6章 运算符重载

    • 运算符重载基础
    • 算术与关系运算符重载
    • 赋值与移动运算符重载
    • 特殊运算符重载
  • 第7章 模板与泛型编程

    • 函数模板
    • 类模板
    • 模板特化与偏特化
    • 可变参数模板
    • 别名模板与模板模板参数
    • SFINAE 与类型萃取
    • 依赖名与 typename/template 关键字
  • 第8章 异常处理

    • 异常处理机制
    • noexcept 与异常安全
    • RAII 与异常安全实践
  • 第9章 内存管理与智能指针

    • 动态内存与内存分区
    • RAII 惯用法
    • unique_ptr
    • shared_ptr 与 weak_ptr
    • 内存管理最佳实践
  • 第10章 右值引用与移动语义

    • 右值引用与值类别深度解析
    • std::move 原理与使用
    • 完美转发与 std::forward
    • 移动语义性能对比与最佳实践
  • 第11章 STL容器

    • vector 深度剖析
    • deque 内部机制
    • list 与 forward_list
    • map 与 set 深度解析
    • unordered 容器与哈希原理
    • array 与 tuple
    • 容器适配器
    • 容器选择全景指南
  • 第12章 STL算法与迭代器

    • 迭代器体系全解
    • 非变异算法
    • 变异算法
    • 排序与二分算法
    • Lambda 与算法组合
    • std::random 随机数库
    • 自定义迭代器开发
  • 第13章 IO流与文件

    • 标准 IO 流
    • 格式化输出控制
    • 文件流操作
    • 字符串流
    • std::regex 正则表达式
  • 第14章 并发与多线程

    • thread 基础与线程管理
    • mutex 与 lock_guard
    • unique_lock 与 condition_variable
    • thread_local 线程局部存储
    • atomic 与内存序
    • future 与 async 异步编程
    • std::chrono 时间库
  • 第15章 现代C++新特性

    • 从 C++11 到 C++20 演进路线
    • C++14 关键新特性
    • C++17 关键新特性
    • C++20 核心特性速览
  • 第16章 面试考点与最佳实践

    • C++ 综合最佳实践清单
    • 高频面试题精讲
    • 多线程面试题与实战
    • 内存管理常见陷阱与排查
  • 附录

    • C++ 核心知识点
    • C++ 专业术语

C++ 专业术语

术语定义源自 ISO C++11 标准(n3337),按照语言核心、对象模型、类型系统、标准库四大领域组织。

1 基础概念

术语(EN)术语(CN)定义
well-formed program良构程序按照语法规则、可诊断语义规则和单一定义规则(ODR)构建的 C++ 程序 [defns.well.formed]
ill-formed program非良构程序不是良构的程序 [defns.ill.formed]
undefined behavior未定义行为本国际标准对其不施加任何要求的行为 [defns.undefined]
unspecified behavior未指定行为对良构程序构造和正确数据,行为取决于实现,但实现无需记录具体行为 [defns.unspecified]
implementation-defined behavior实现定义行为对良构程序构造和正确数据,行为取决于实现,且每个实现必须记录 [defns.impl.defined]
conditionally-supported条件支持实现不要求必须支持的程序构造 [defns.cond.supp]
diagnostic message诊断消息属于实现定义的实现输出消息子集的消息 [defns.diagnostic]
implementation limits实现限制实现对程序施加的限制 [defns.impl.limits]
locale-specific behavior特定于语言环境的行为取决于国家、文化和语言的本地约定,每个实现必须记录的行为 [defns.locale.specific]

2 参数与签名

术语(EN)术语(CN)定义
argument / actual argument / actual parameter实参 / 实际参数函数调用表达式中由括号界定的逗号分隔列表中的表达式;或在宏调用中括号内逗号分隔列表中的预处理记号序列;或在 throw 表达式中 throw 的操作数;或在模板实例化中由尖括号界定的逗号分隔列表中的表达式、类型 ID 或模板名
parameter / formal argument / formal parameter形参 / 形式参数作为函数声明或定义的一部分或在异常处理器的 catch 子句中声明的对象或引用,在进入函数或处理器时获取值;或在函数式宏定义中紧跟在宏名后的括号内逗号分隔列表中的标识符
signature签名函数的名称、参数类型列表及外围命名空间(如有)。函数模板的签名还包括返回类型和模板参数列表。类成员函数的签名还包括所属类、cv 限定符(如有)和引用限定符(如有)

3 类型系统

术语(EN)术语(CN)定义
static type静态类型在不考虑执行语义的情况下分析程序得出的表达式类型,仅取决于程序形式,在程序执行期间不改变 [defns.static.type]
dynamic type动态类型对于泛左值(glvalue),指该泛左值表达式所引用对象的最派生类型;对于纯右值(prvalue),指该纯右值表达式的静态类型 [defns.dynamic.type]
object对象存储区域。由定义、new 表达式或实现在需要时创建。对象具有存储期、生命周期和类型 [intro.object]
subobject子对象对象中包含的其他对象,可以是成员子对象、基类子对象或数组元素 [intro.object]
complete object完整对象不是任何其他对象的子对象的对象 [intro.object]
most derived object最派生对象最派生类类型或非类类型的对象 [intro.object]
polymorphic object多态对象声明或继承了虚函数的类的对象 [intro.object]
POD type / trivial type / standard-layout typePOD 类型 / 平凡类型 / 标准布局类型在 C++11 中,POD 概念被细分为平凡可复制(trivially copyable)和标准布局(standard-layout)两类

4 值类别

术语(EN)术语(CN)定义
lvalue左值指定一个函数或对象的表达式,可用于取地址
prvalue纯右值不是左值的表达式,用于初始化对象或计算操作数值,不关联可识别对象
xvalue将亡值接近生命周期结束的泛左值,通常由 std::move 返回或从返回右值引用的函数调用产生
glvalue泛左值左值或将亡值的统称,具有对象或函数的身份标识
rvalue右值纯右值或将亡值的统称

5 存储与生命周期

术语(EN)术语(CN)定义
storage duration存储期决定对象生命周期的时间属性。分为静态存储期、线程存储期、自动存储期和动态存储期
static storage duration静态存储期对象在程序启动时分配,结束时释放。包括命名空间作用域变量和 static 局部变量
thread storage duration线程存储期C++11 新增。使用 thread_local 声明的变量,每个线程拥有独立实例,随线程创建和销毁
automatic storage duration自动存储期块作用域中未声明为 static / thread_local / extern 的变量,进入块时创建,退出时销毁
dynamic storage duration动态存储期通过 new 表达式分配、delete 表达式释放的对象
lifetime生命周期对象在程序执行期间存在的运行时段。对象的生命周期在构造完成后开始、析构开始时结束

6 内存模型与并发

术语(EN)术语(CN)定义
byte字节C++ 内存模型中的基本存储单元。至少足够容纳基本执行字符集任意成员和 Unicode UTF-8 编码的八位码元 [intro.memory]
memory location内存位置标量类型的对象或非零宽度的相邻位域的最大序列 [intro.memory]
thread of execution / thread线程程序中的单一控制流,包括初始顶层函数调用及其后续递归调用 [intro.multithread]
data race数据竞争当两个表达式求值中的一个修改某内存位置而另一个访问或修改同一内存位置时发生 [intro.multithread]
sequenced before先序于不对称、传递的求值二元关系,在单线程内引发偏序。如果 A 先序于 B,则 A 的执行必须先于 B [intro.execution]
happens before发生于…之前跨线程的可见性关系,由 synchronizes-with 和 sequenced-before 关系导出
atomic operation原子操作不可分割的操作,不会发生数据竞争。包括 relaxed、acquire、release、consume、acquire-release 和 sequentially consistent 六种内存序
fence栅栏不关联特定内存位置的同步操作,分为 acquire fence、release fence 或两者兼具
modification order修改顺序特定原子对象 M 的所有修改按某个全局顺序排列 [intro.multithread]
forward progress前向进展实现应确保所有未被阻塞的线程最终取得进展 [intro.multithread]

7 表达式与求值

术语(EN)术语(CN)定义
full-expression完整表达式不是另一个表达式的子表达式的表达式 [intro.execution]
side effect副作用访问 volatile 泛左值指定的对象、修改对象、调用库 I/O 函数或调用执行上述操作的函数,都是副作用 [intro.execution]
observable behavior可观察行为对 volatile 对象的访问、文件写入和交互设备 I/O 构成程序的可观察行为 [intro.execution]
constant expression常量表达式可在编译期求值的表达式,结果可用于模板参数、数组边界等需要编译期常量的上下文中
ODR-usedODR 使用单一定义规则使用。当一个变量/函数在需要其定义存在的上下文中被引用时,称为被 ODR-used

8 声明与定义

术语(EN)术语(CN)定义
declaration声明向程序引入名称的构造。声明可以同时是定义
definition定义对实体提供完整描述的声明。变量定义分配存储,函数定义包含函数体,类定义包含成员声明
One Definition Rule(ODR)单一定义规则任何翻译单元不得包含同一变量/函数/类/枚举/模板的多个定义;整个程序中非内联函数或变量只能有一处定义
linkage链接性名称在不同作用域引用同一实体的能力。分为外部链接、内部链接和无链接
name lookup名称查找将程序中的名称与其声明相关联的过程。分为非限定查找、限定查找和依赖于实参的查找(ADL)
ADL(Argument-Dependent Lookup)依赖于实参的查找在函数调用中,除常规作用域查找外,还在实参类型关联的命名空间中查找函数名

9 类与对象模型

术语(EN)术语(CN)定义
constructor构造函数类对象创建时自动调用的特殊成员函数,负责初始化对象
destructor析构函数对象生命周期结束时自动调用的特殊成员函数,负责释放资源
copy constructor拷贝构造函数用同类型对象初始化新对象的构造函数
move constructor移动构造函数C++11 新增。用右值引用的同类型对象"窃取"资源来初始化新对象
copy assignment operator拷贝赋值运算符将同类型对象的值赋给已有对象的运算符
move assignment operator移动赋值运算符C++11 新增。用右值引用的同类型对象"窃取"资源来赋值
virtual function虚函数通过基类指针或引用调用时,根据实际对象动态类型分派的成员函数
abstract class抽象类包含至少一个纯虚函数的类,不能直接实例化
aggregate聚合类无用户提供的构造函数、无非静态数据成员初始化器、无私有或受保护非静态数据成员、无基类、无虚函数的类或数组
POD(Plain Old Data)简单旧数据与 C 语言兼容的数据结构,在 C++11 中拆分为 trivial 和 standard-layout 两个概念
RAII(Resource Acquisition Is Initialization)资源获取即初始化C++ 核心惯用法:在构造函数中获取资源,在析构函数中释放资源,确保异常安全

10 模板

术语(EN)术语(CN)定义
template模板参数化的类或函数蓝图,编译时根据模板实参生成具体代码
template instantiation模板实例化用具体实参替换模板参数生成类或函数的过程。分为隐式实例化和显式实例化
template specialization模板特化为特定模板实参组合提供不同于通用模板的实现。分为全特化和偏特化
dependent name依赖名依赖于模板参数的名称,其查找推迟到模板实例化时
SFINAE(Substitution Failure Is Not An Error)替换失败不是错误模板参数替换失败时,不导致编译错误,而是将该候选模板从候选集中移除
variadic template可变参数模板C++11 新增。接受可变数量模板参数的模板,使用参数包(parameter pack)语法
alias template别名模板C++11 新增。为模板类型创建别名的模板声明
extern template外部模板C++11 新增。抑制模板的隐式实例化,减少编译时间

11 C++11 新增核心特性术语

术语(EN)术语(CN)定义
rvalue reference右值引用用 T&& 声明的引用类型,可绑定到右值,是移动语义和完美转发的基础
move semantics移动语义通过"窃取"资源而非拷贝资源来优化性能的机制,依赖右值引用和移动构造函数/移动赋值
perfect forwarding完美转发使用 std::forward 将函数模板参数以其原始值类别(左值/右值)转发给另一个函数
lambda expressionlambda 表达式在代码中内联定义的匿名函数对象,可捕获上下文变量
constexpr常量表达式修饰符声明可在编译期求值的变量或函数
auto type deductionauto 类型推导编译器从初始化表达式自动推导变量类型
decltype声明类型获取表达式或实体的声明类型,保留引用和 cv 限定符
nullptr空指针字面量类型为 std::nullptr_t 的空指针常量,替代 NULL 宏
enum class(scoped enum)限定作用域枚举具有作用域的强类型枚举,枚举值不隐式转换到 int
range-based for loop基于范围的 for 循环遍历容器或数组所有元素的简洁循环语法
defaulted function默认函数用 = default 显式要求编译器生成默认实现的特殊成员函数
deleted function删除函数用 = delete 显式禁止某函数的使用或生成
override覆盖说明符标记虚函数覆盖,编译器验证基类确有对应虚函数
final最终说明符阻止虚函数被进一步覆盖或类被继承
noexcept不抛出说明符声明函数不抛出异常,编译器可据此优化
static_assert静态断言编译期条件检测,失败时给出指定错误消息
delegating constructor委托构造函数构造函数调用同类的另一个构造函数来执行初始化
inheriting constructor继承构造函数使用 using 声明将基类构造函数引入派生类
non-static data member initializer非静态数据成员初始化器在类定义中直接为非静态数据成员提供默认初始化值
brace-or-equal-initializer花括号或等号初始化器使用 {...} 或 = expr 形式的初始化器
list-initialization列表初始化使用花括号 {...} 的统一初始化语法,防止窄化转换
thread_local线程局部存储声明线程存储期变量,每个线程拥有独立实例
raw string literal原始字符串字面量使用 R"(...)" 语法的字符串,不处理转义序列
explicit conversion operator显式转换运算符用 explicit 声明的类型转换运算符,禁止隐式类型转换
trailing return type后置返回类型将函数返回类型放在参数列表之后,使用 auto 前置 + -> Type 后置语法
default template argument for function template函数模板的默认模板参数C++11 允许函数模板使用默认模板参数
local type as template argument局部类型作模板实参C++11 允许局部类型用作模板实参
angle bracket fix尖括号修复连续右尖括号 >> 不再歧义为右移运算符,正确解析为模板嵌套闭合

12 标准库术语

术语(EN)术语(CN)定义
smart pointer智能指针自动管理动态分配对象生命周期的类模板。包括 unique_ptr(独占所有权)、shared_ptr(共享所有权)、weak_ptr(弱引用)
unique_ptr独占指针C++11 新增。独占所有权的智能指针,不可拷贝,可移动
shared_ptr共享指针C++11 新增。引用计数的共享所有权智能指针,最后一个 shared_ptr 销毁时释放对象
weak_ptr弱引用指针C++11 新增。不增加引用计数的观察者指针,用于打破循环引用
container容器存储对象集合的类模板。分为序列容器、关联容器和无序关联容器
sequence container序列容器元素按线性顺序排列的容器:array、vector、deque、forward_list、list
associative container关联容器基于红黑树实现的有序容器:set、multiset、map、multimap
unordered associative container无序关联容器C++11 新增。基于哈希表实现的容器:unordered_set、unordered_multiset、unordered_map、unordered_multimap
iterator迭代器访问容器元素并提供遍历机制的对象。按能力分为输入 / 输出 / 前向 / 双向 / 随机访问迭代器
allocator分配器封装内存分配和释放策略的对象,容器模板以之为参数实现灵活的内存管理
function object / functor函数对象 / 仿函数重载了 operator() 的对象,可像函数一样调用
std::function多态函数包装器C++11 新增。可存储、复制和调用任何可调用目标的通用函数包装器
std::bind绑定C++11 新增。将函数与其部分参数绑定,生成新的可调用对象
std::tuple元组C++11 新增。固定大小的异构值集合
std::array固定大小数组C++11 新增。封装固定大小数组的容器,支持迭代器和标准容器接口
std::forward_list单向链表C++11 新增。单向链表容器,内存开销比 std::list 更小
regex正则表达式C++11 新增。支持 ECMAScript 等语法的正则表达式匹配、搜索和替换库
chrono时间库C++11 新增。高精度时间点和时间间隔处理库
random随机数库C++11 新增。提供多种随机数引擎和分布类型的随机数生成库
atomic原子操作C++11 新增。无锁原子类型和对各种内存序的原子操作支持
thread线程C++11 新增。标准线程类,支持创建、等待和分离线程
mutex互斥锁C++11 新增。提供互斥访问的同步原语,包括 mutex、recursive_mutex、timed_mutex 等
condition_variable条件变量C++11 新增。线程间等待 / 通知机制
future / promise期值 / 承诺C++11 新增。异步任务结果传递机制。promise 端设置值,future 端获取值
type traits类型特征C++11 新增。编译期类型查询和类型转换的元编程工具库
initializer_list初始化列表C++11 新增。支持统一初始化语法的轻量级列表类型
scoped_allocator_adaptor作用域分配器适配器C++11 新增。将外层容器的分配器传递给内层元素的适配器

13 预处理

术语(EN)术语(CN)定义
translation unit翻译单元源文件加上通过 #include 包含的所有头文件减去被条件编译排除的行,是编译的基本单元
phases of translation翻译阶段C++ 源代码经历的 9 个翻译阶段:字符映射 → 行拼接 → 预处理分词 → 预处理执行 → 字面量转换 → 相邻字符串拼接 → 编译 → 模板实例化 → 链接
macro宏通过 #define 定义的预处理替换规则
pragma编译指示通过 #pragma 向编译器传递实现特定的指令

14 异常处理

术语(EN)术语(CN)定义
exception异常程序执行过程中抛出的对象,用于向调用方传递错误或异常情况
try-catch尝试捕获异常处理的基本结构:在 try 块中执行可能抛出异常的代码,在 catch 块中处理异常
stack unwinding栈展开异常抛出后,从 throw 点到匹配 catch 之间销毁所有自动对象的过程
exception specification异常规范声明函数可能/不会抛出哪些异常。C++11 中用 noexcept 替代动态异常规范
RAII-based exception safety基于 RAII 的异常安全利用构造函数获取资源、析构函数释放资源的惯用法保证异常安全

术语编号格式说明:[defns.xxx] 为 C++11 标准中对应术语的锚点标识。 (内容由AI生成,仅供参考)

上一页
C++ 核心知识点