C++关键字

C++关键字列表

ISO C++98/03关键字共 63 个:

asm do if return typedef
auto double inline short typeid
bool dynamic_cast int signed typename
break else long sizeof union
case enum mutable static unsigned
catch explicit namespace static_cast using
char export new struct virtual
class extern operator switch void
const false private template volatile
const_cast float protected this wchar_t
continue for public throw while
default friend register true
delete goto reinterpret_cast try

C++11新关键字详解

alignas

alignof 用于获取取指定表达式指定的( 类似 sizeof,可以直接是类型名)的对齐(alignment)。alignas 用于声明时指定对齐类似于现有的类型。和 sizeof 类似,两者的操作数都不被求值。

constexpr

类似 const 但更强大,修饰 函数对象,表示函数结果或对象是编译时决定的常量,以便优化。( const 不能修饰一般的函数,也不一定指定声明的对象能编译期的常量表达式,更可能只是只读对象。而在 C 语言 中,const 完全只能指定只读对象。)

char16_t 和 char32_t

二者分别表示 16 位 字符型 和 32 位字符型,类似 char 和 wchar_t,也是一般只专用于表示字符的 整数类型,且设计上用于表示 Unicode 字符。char16_t 和 char32_t 是 C++11 新增的,以克服 wchar_t 在不同平台上无法保证确定宽度的缺点。

decltype

用于编译时推断类型。此外参与函数声明的另一种语法:指定返回 auto,同时 decltype 引导 trailing-return-type 指定实际应该返回类型。decltype 的操作数也不被求值。

nullptr

字面量 nullptr 是具有 std::nullptr_t 类型的右值,是空 指针 常量。C++98/03 中表示空指针常量的 NULL 或 0 都会在重载中引起混淆,而纯库的解决方案在这里也遇到困难,所以有必要加入新的关键字来专门表示空指针。

noexcept

实践表明动态异常规范会影响运行时性能。新增的 noexcept 表示静态异常规范,只指定函数(模版)是否有异常抛出,这里 noexcept 即 noexcept(true),表示没有异常抛出。除了异常规范,noexcept 可以作用于一个表达式来判断是否有异常,这对于模版代码非常有用。

static_assert

用于编译时的静态断言:若指定的表达式为 false 则编译失败。

auto

C11 标准和 C98/03 标准的 auto 是不同的。C98/03 标准中,auto 表示自动储存类型;C11 标准中,auto 表示由编译器静态判断其应有的类型。

C++关键字列表总结

ISO C++98/03关键字共 63 个。