C++关键字完整版

image
image
alignas (C++11 起) :指定类型或对象的对齐要求。
alignof (C++11 起) :查询类型的对齐要求。
and :用作 && 的替代写法
and_eq :用作 &= 的替代写法
asm :汇编(asm)声明 给予在 C++ 程序中嵌入汇编语言源代码的能力。
atomic_cancel (TM TS) :原子块,若抛出异常,则调用 std::abort,除非该异常是用于事务取消的异常之一(用于 atomic_cancel 块中的事务取消的异常有 std::bad_alloc、std::bad_array_new_length、std::bad_cast、std::bad_typeid、std::bad_exception、std::exception 和所有从它派生的标准库异常,以及特殊异常类型 std::tx_exception<T>。),这种情况下事务被取消(cancel):程序中所有由该原子块的各操作的副作用所修改的内存位置的值,被还原到该原子块的执行开始时它们曾拥有的值,而异常照常持续栈回溯。
atomic_commit (TM TS) :原子块,若抛出异常,则正常地提交事务。
atomic_noexcept (TM TS) :原子块,若抛出异常,则调用 std::abort。
auto(1)
1.自动生命周期(C++98,弃用)。
2.auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型(C++11)
auto au_a = a;//自动类型推断,au_a为int类型
3.用于代替冗长复杂、变量使用范围专一的变量声明。
4.在定义模板函数时,用于声明依赖模板参数的变量类型。
5.模板函数依赖于模板参数的返回值
6.auto仅仅是一个占位符,它并不是一个真正的类型
bitand :用作 & 的替代写法
bitor :用作 | 的替代写法
bool :足以存放两个值 true 或 false 之一的类型
break :控制将被转移到紧跟其外围循环或 switch 的下一位置。break 语句不能用于跳出多重嵌套循环
case :根据条件的值,将控制流转移到若干语句之一
catch :和try联合使用,将一或多个异常处理块(catch 子句)与复合语句关联。
char :能在目标系统上最有效地处理的字符表示的类型
char8_t (C++20 起) :UTF-8 字符表示的类型,要求大到足以表示任何 UTF-8 编码单元( 8 位)
char16_t (C++11 起) :UTF-16 字符表示的类型,要求大到足以表示任何 UTF-16 编码单元( 16 位)
char32_t (C++11 起) :UTF-32 字符表示的类型,要求大到足以表示任何 UTF-32 编码单元( 32 位)
C++ 标准还保证:1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
class(1)
1.声明类
2.有作用域枚举(C++11)
3.在模板声明中,class 可用于引入类型模板形参与模板模板形参
4.作用域中存在具有与某个类类型的名字相同的名字的函数或变量,则 class 可附于类名之前以消歧义
compl :用作 ~ 的替代写法
concept (C++20 起) :声明具名类型要求

概念是要求的具名集合。概念的定义必须出现于命名空间作用域中。
概念定义拥有以下形式
template < 模板形参列表 >
concept 概念名 = 约束表达式;
template <class T, class U>
concept Derived = std::is_base_of<U, T>::value;

const
1.const 类型限定符,定义类型为常量
2.const 限定的成员函数(例如 const 成员函数中,只能正常地调用其他 const 成员函数。)
consteval (C++20 起) : 指定函数是立即函数(immediate function),即每次调用该函数必须产生编译时常量
constexpr (C++11 起) :指定变量或函数的值可在常量表达式中出现,在 constexpr if 语句中,条件 的值必须是可按语境转换到 bool 类型的经转换常量表达式。
constinit (C++20 起) :断言变量拥有静态初始化,即零初始化与常量初始化,否则程序非良构。
const_cast :用const_cast来去除const限定
continue :导致外围 for、范围 for、while 或 do-while 循环体的剩余部分被跳过。可在不用它而用条件语句忽略循环的剩余部分显得笨拙时使用。(如同用 goto 跳转到循环体末尾一样)
co_await (C++20 起) :协程是能暂停执行以在之后恢复的函数。
co_return (C++20 起) :协程中的 return 语句
co_yield (C++20 起) :协程中表达式向调用方返回一个值并暂停当前协程
decltype (C++11 起) :检查实体的声明类型,或表达式的类型和值类别。
default(1)
1.switch 语句:用于声明默认情况标号
2.显式默认化的函数定义:令编译器为某个类生成特殊成员函数或比较运算符 (C++20 起)的显式指令。
(C++11 起)
delete(1)
1.销毁先前由 new 表达式分配的对象,并释放获得的内存区域
2.解分配函数:作为运算符式的函数名
3.弃置函数(C++11 起)
do :do-while 循环:用作循环的声明
double : 浮点类型
dynamic_cast :沿继承层级向上、向下及侧向,安全地转换到其他类的指针和引用。
else :if 语句:用作另一分支的声明
enum :声明枚举类型
explicit
1.指定构造函数或转换函数 (C++11 起)或推导指引 (C++17 起)为显式,即它不能用于隐式转换和复制初始化。
2.explicit 说明符可以与常量表达式一同使用。当且仅当该常量表达式求值为 true 时函数为显式。
export(1)(3)
1.用于标记模板定义为被导出,这允许在其他翻译单元中声明但不定义同一模板。(C++11 前)
2.不使用并保留该关键词。(C++11 起)(C++20 前)
3.标记一个声明、一组声明或另一模块为当前模块所导出。(C++20 起)
extern(1)
1.具有外部连接的静态存储期说明符
2.语言连接说明
3.显示模板实例化声明(或“extern 模板”)
false :布尔字面量
float :单精度浮点类型
for
1.for 循环:用于该循环的声明
2.基于范围的 for 循环:用于该循环的声明(C++11 起)
friend :友元声明出现于类体内,并向一个函数或另一个类授予对包含友元声明的类的私有及受保护成员的访问权。
goto :无条件转移控制流。当使用其他语句不可能将控制转移到所需位置时使用。
if :有条件地执行另一条语句。用于需要基于运行时或编译时条件执行的代码。
inline(1)
1.将函数声明为一个 内联(inline)函数。完全在 class/struct/union 的定义之内定义的函数,无论它是成员函数还是非成员 friend 函数,均为隐式的内联函数。
2.内联命名空间
int :基本整数类型。
long :目标类型将有至少 32 位的宽度。
mutable(1)
1.容许在即便包含它的对象被声明为 const 时仍可修改声明为 mutable 的类成员。
2.mutable 用于指定不影响类的外部可观察状态的成员(通常用于互斥体、记忆缓存、惰性求值和访问指令等)。
3.从按复制捕获的形参中移除的 const 限定性的 lambda 声明符 (C++11 起)
4.被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
namespace
1.命名空间声明
2.命名空间别名声明
3.using 指令
new
1.创建并初始化拥有动态存储期的对象,这些对象的生存期不受它们创建时所在的作用域限制。
2.分配函数:作为运算符式的函数名
noexcept (C++11 起)
1.noexcept 运算符进行编译时检查,若表达式声明为不抛出任何异常则返回 true
2.指定函数是否抛出异常。
not :用作 ! 的替代写法
not_eq :用作 != 的替代写法
nullptr (C++11 起) :代表指针字面量,保持空指针常量的含义。
operator :重载的运算符是具有特殊的函数名的函数
or :用作 || 的替代写法
or_eq :用作 |= 的替代写法
private :该访问说明符之后的各个成员具有私有成员访问
protected :该访问说明符之后的各个成员具有受保护成员访问
public :该访问说明符之后的各个成员具有公开成员访问
reflexpr (反射 TS) :反射是指程序在运行时动态获取对象属性与方法的一种机制
register(2)
1.动存储期,另提示编译器将此对象置于处理器的寄存器。
2.不使用并保留该关键词。
reinterpret_cast :通过重新解释底层位模式在类型间转换。
requires (C++20 起)
1.对模板形参指定一个求值为要求的常量表达式
2.于模板声明中指定关联制约
return :终止当前函数并返回指定值(若存在)给调用方函数。
short :至少 16 位的宽度(和long一样表示大小)
signed :目标类型将拥有有符号表示(若省略则此为默认)
sizeof(1)
1.查询对象或类型的大小
2.在需要知道对象的实际大小时使用
3.返回形参包中的元素数量。
static
1.声明具有静态存储期和内部连接的命名空间成员
2.定义具有静态存储期且仅初始化一次的块作用域变量
3.声明不绑定到特定实例的类成员
static_assert (C++11 起) :进行编译时断言检查。
static_cast :用隐式和用户定义转换的组合在类型间转换。
struct(1)
1.复合类型的声明
2.有作用域枚举类型的声明(C++11 起)
3.若存在于作用域中的某个函数或变量所拥有的名字,与某个非联合体类类型的名字相同,则可在其名字之前加上 struct 来消歧义,这产生一个详述类型说明符
switch :根据条件的值,将控制流转移到若干语句之一
synchronized (TM TS) :程序中的所有最外层同步块都以一个单独的全序执行
template
1.声明模板
2.在模板定义中,template 可用于将某个待决名声明为模板。
this :this 是一个纯右值表达式,其值是隐式对象形参(在其上调用非静态成员函数的对象)的地址
thread_local (C++11 起) :线程存储期
throw
1.对错误条件发信号,并执行错误处理代码。
2.列出函数可能直接或间接抛出的异常。
true : bool 类型的纯右值,为真。
try :将一或多个异常处理块(catch 子句)与复合语句关联。
typedef :创建能在任何位置替代(可能复杂的)类型名的别名。
typeid :查询类型的信息。用于必须知晓多态对象的动态类型的场合以及静态类型鉴别。
typename
1.在模板声明中,typename 可用作 class 的代替品,以声明类型模板形参和模板形参 (C++17 起)。
2.在模板的声明或定义内,typename 可用于声明某个待决的有限定名是类型。
3.在模板的声明或定义内, (C++11 前)typename 可在非待决的有限定类型名之前使用。此情况下它没有效果。
4.在类型要求的要求中。(C++20 起)
union
1.联合体类型的声明
2.若存在于作用域中的某个函数或变量所拥有的名字与某个联合体类型的名字相同,则可在该名字之前加上 union 以消歧义,这产生详述类型说明符
unsigned :目标类型将拥有无符号表示
using(1)
1.对命名空间的 using 指令及对命名空间成员的 using 声明
2.对类成员的 using 声明
3.类型别名与别名模板声明 (C++11 起)
virtual
1.虚函数说明符
2.虚基类说明符
void
1.void 类型
2.无形参函数的形参列表
volatile :定义类型为易变,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
wchar_t :宽字符表示的类型
while
1.while 循环:该循环的声明
2.do-while 循环:该循环终止条件的声明
xor :作为 ^ 的替代写法
xor_eq :用作 ^= 的替代写法

原文地址:https://www.cnblogs.com/still-smile/p/15284045.html