C++ 关键字详解

C++11 关键字共73个。

  • volatile:类型修饰符type specifier,和 const 对应,A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided.   

volatile int i=0;a=i;b=i;

volatile 指出 i 是随时可能发生变化的,每次使用它的时候必须从 i的地址中读取,因而编译器生成的汇编代码会重新从i的地址读取数据放在 b 中。而优化做法是,由于编译器发现两次从 i读数据的代码之间的代码没有对 i 进行过操作,它会自动把上次读的数据放在 b 中。而不是重新从 i 里面读。这样以来,如果 i是一个寄存器变量或者表示一个端口数据就容易出错,所以说 volatile 可以保证对特殊地址的稳定访问。

  • nullptr:C11空指针,https://www.cnblogs.com/DswCnblog/p/5629073.html

  • auto:关键字会根据初始值自动推断变量的数据类型。C++98/03标准中,auto表示自动储存类型 [6]  ;C++11标准中,auto表示由编译器静态判断其应有的类型。
  • bool,true,false

  • break,continue,goto:break用于跳出for或while循环或switch。continue用于跳转到循环起始。goto用于无条件跳转到函数内的标号。

  • case,default,switch :

  • catch,throw,try:异常处理,try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。throw在函数中还表示动态异常规范,但在C++11中被标记为过时(由noexcept部分取代)。

  • const,volatile 

  • struct,class,union:用于类型声明。class是一般的类类型。struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。union是联合体类型

  • delete,new

    delete单独使用,表示释放具有动态期对象,默认版本调用全局的去配器(deallocator)::operator delete和析构函数。new单独使用,表示请求分配动态存储期对象,默认版本调用全局的分配器(allocator)::operator new和指定的析构函数。和operator连用表示分别表示去配器(operator delete)和分配器(operator new),用于释放分配器(allocator)的内存和分配内存。operator delete也在分配内存被异常中断时被调用。

  • enum:构成枚举类型名的关键字。C++11新增带作用域的枚举,用enum class或enum struct(两者等价)声明

  • explicit

  • friend:声明友元,使其不受访问权限控制的限制。友元函数是指某些虽然不是类成员函数却能够访问类的所有成员的函数;友元类:友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)(1) 友元关系不能被继承。(2) 友元关系是单向的,不具有交换性。(3) 友元关系不具有传递性 ;友元成员函数

  • inline:提示编译时内联——将所调用的代码嵌入到主调函数中。为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。

  • noexcept 在C++11中,声明一个函数不可以抛出任何异常使用关键字noexcept.

C/C++预处理指令#define,#ifdef,#ifndef,#endif…

预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

猜你喜欢

转载自my.oschina.net/u/347414/blog/1788806
今日推荐