本文最后更新于 28 天前,其中的信息可能已经有所发展或是发生改变。
简述:记录C++11标准下关键字,目前仅为简略整理。
部分内容详细展开内容过多,碍于技术水平和个人精力限制,待后续扩展。
后续重大修改同步更新简述
C++关键字
- 常见C++关键字
asm关键字
- 用于调用内联汇编程序,允许在
C++程序中嵌入汇编代码
auto关键字
- 表明变量”自动”具有本地范围,块范围的变量声明(如
for循环体内的变量声明)默认为auto存储类型
bool关键字
_BOOL类型,8位整型。- 在C语言
C89标准之前并不支持布尔类型,C89之后加入了stdbool.h头文件,定义了bool / true / false宏便于使⽤,要注意的是C语言中的布尔类型实际上是整型,是一种伪布尔类型
break关键字
- 跳出循环,可以用于跳出
for循环,while循环,do while循环,switch语句
case关键字
- 用于
switch语句中,用于判断不同的条件类型
catch关键字
C++的异常处理关键字,通常catch和try语句一起用于异常处理
char关键字
char字符类型,C++中的基本数据结构,其值一般为8位整数
class关键字
- 可自定义的一种变量类型,与结构体联合体等类似,可使用
class关键字声明一个类
const关键字
const意为常量的,所修饰的对象或变量不能被改变
const_cast关键字
- 用来去除复合类型中
const和volatile属性
continue关键字
continue关键字用于循环结构。它使程序跳过代码段后部的部分,与break不同的是,continue不是进入代码段后的部分执行,而是重新开始新的循环
decltype关键字
- 若仅希望得到类型,而不需要(或不能)定义变量的时候应该怎么办呢?
C++11新增了decltype关键字,用来在编译时推导出一个表达式的类型,
//语法格式为
//其中,exp 表示一个表达式(expression)
decltype(exp)
decltype(f()) sum = x;
decltype(cj) x = 0; //x的类型是const int
decltype(cj) y = x; //y的类型是const int&,y绑定到变量x
decltype(cj) z; //错误:z是一个引用,必须初始化
default关键字
default用于switch语句。当switch所有的case都不满足时,将进入default执行。default只能放在switch语句所有的case之后,并且是可选的
delete关键字
delete释放程序动态申请的内存空间。delete后面通常是一个指针或者数组 [],并且只能delete通过new关键字申请的指针,否则会发生段错误
do关键字
do-while循环结构
double关键字
double类型,以双精度形式存储一个浮点数
dynamic_cast关键字
dynamic_cast,允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构安全地转换类型。dynamic_cast提供了两种转换方式,把基类指针转换成派生类指针,或者把指向基类的左值转换成派生类的引用
else关键字
- 与
if一起使用
enum关键字
- 枚举类型
explicit关键字
explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的
export关键字
C++11前: 用于标注一个模板定义被导出,这允许在其他翻译单元中声明,但不定义同一模板C++11起: 不使用,并保留该关键字
extern关键字
- 修饰符
extern用在变量或者函数的声明前,用来说明此变量/函数是在别处定义的,要在此处引用
false关键字
- 布尔型变量,逻辑假,对应
整型0
for关键字
for是C++中的循环结构之一
friend关键字
friend声明友元关系。友元可以访问与其有friend关系的类中的private/protected成员
goto关键字
- 用于无条件跳转到某一标号处开始执行
if关键字
- 条件控制语句,与
else同时使用
inline关键字
inline(内联)函数的定义将在编译时在调用处展开
int关键字
- 整型数据类型,有符号32位整数
long关键字
- 整型数据类型,有符号 32 整数 (
long int)
long long关键字
- 有符号 64 位整数
mutable关键字
- 当一个成员变量被声明为
mutable时,它显示地表明”这个变量可能在一个const语义环境中被更改”
namespace关键字
- 命名空间
new关键字
new用于新建一个对象。new运算符总是返回一个指针
operator关键字
operator用于操作符重载
private关键字
protected(受保护的),C++中的访问控制符。被标明为private的字段只能在本类以及友元中访问
protected关键字
protected(受保护的),C++中的访问控制符。被标明为protected的字段只能在本类以及其继承类和友元中访问
public关键字
public(公有的),C++中的访问控制符。被标明为public的字段可以在任何类
register关键字
register(寄存器)声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器中
reinterpret_cast关键字
type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)
return关键字
return(返回)用于在函数中返回值。程序在执行到return语句后立即返回
short关键字
short(短整型,short integer),C++中的基本数据结构,用于表示整数,精度小于int
signed关键字
signed(有符号),表明该类型是有符号数,和unsigned相反。数字类型(整型和浮点型)都可以用signed修饰。但默认就是signed,所以一般不会显式使用
sizeof关键字
- 由于
C++每种类型的大小都是由编译器自行决定的,为了增加可移植性,可以用sizeof运算符获得该数据类型占用的字节数。
static关键字
static(静态的)静态变量作用范围在一个文件内
static_cast关键字
该运算符把 expression 转换为 type-id 类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
- ① 用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。
- ② 用于基本数据类型之间的转换,如把
int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 - ③ 把空指针转换成目标类型的空指针。
- ④ 把任何类型的表达式转换成
void类
注意 static_cast 不能转换掉 expression 的 const、volitale、或者 __unaligned 属性
struct关键字
struct(结构)类型,类似于class关键字
switch关键字
switch(转换)类似于if-else-if语句,是一种多分枝语句。它提供了一种简洁的书写,并且能够生成效率更好的代码。但是,switch后面的判断只能是int(char也可以,但char本质上也是一种int类型)。switch语句最后的default分支是可选的
template关键字
template(模板),C++中泛型机制的实现
this关键字
this返回调用者本身的指针
throw关键字
throw(抛出)用于实现C++的异常处理机制,可以通过throw关键字”抛出”一个异常
true关键字
true(真的),C++的基本数据结构bool类型的值之一。等同于int的非0值
try关键字
try用于实现C++的异常处理机制。可以在try中调用可能抛出异常的函数,然后在try后面的catch中捕获并进行处理。
typedef关键字
typedef(类型定义,type define),其格式为:
typedef 类型 定义名;
类型说明定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。
typeid关键字
- 指出指针或引用指向的对象的实际派生类型
typename关键字
typename(类型名字)关键字告诉编译器把一个特殊的名字解释成一个类型。在下列情况下必须对一个 name 使用 typename 关键字:
1. 一个唯一的`name`(可以作为类型理解),它嵌套在另一个类型中的。
2. 依赖于一个模板参数,就是说:模板参数在某种程度上包含这个`name`。当模板参数使编译器在指认一个类型时产生了误解
union关键字
- 与
结构体(struct)、枚举(enum)一样,联合体也是一种构造类型;union成员表中含有若干成员,成员的一般形式为:类型说明符 成员名。其占用的字节数与成员中最大数据类型占用的字节数
unsigned关键字
unsigned(无符号),表明该类型是无符号数,和signed相反
using关键字
- 表明使用
namespace
virtual关键字
virtual(虚的),C++中用来实现多态机制
void关键字
void(空的),可以作为函数返回值,表明不返回任何数据;可以作为参数,表明没有参数传入(C++中不是必须的);可以作为指针使用
volatile关键字
volatile(不稳定的)限定一个对象可被外部进程(操作系统、硬件或并发线程等)改变,声明时的语法如下:
int volatile nVint;
这样的声明是不能达到最高效的,因为它们的值随时会改变,系统在需要时会经常读写这个对象的值。因此常用于像中断处理程序之类的异步进程进行内存单元访问。
wchar_t关键字
wchar_t是宽字符类型,每个wchar_t类型占 2 个字节,16 位宽
while关键字
while循环