C++ 关键字

C++关键字
alignas continuefriend registertrue
alignofdecltype gotoreinterpret_casttry
asmdefault if return typedef
autodeleteinlineshorttypeid
booldointsignedtypename
breakdoublelongsizeof union
casedynamic_castmutable static unsigned
catch elsenamespacestatic_assertusing
char enumnewstatic_castvirtual
char16_texplicitnoexceptstructvoid
char32_texportnullptr switchvolatile
classexternoperatortemplatewchar_t
constfalseprivatethiswhile
constexprfloatprotectedthread_local
const_cast forpublicthrow

注:C++11中有73个关键字,其中红色标注为C语言中的32个关键字。

  • C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。
  1. 数据类型关键字(12个)

char: 声明字符型变量或函数
double: 声明双精度变量或函数
float:声明浮点型变量或函数
int: 声明整型变量或函数
long:声明长整型变量或函数
short: 声明短整型变量或函数
signed: 声明有符号类型或函数
unsigned: 声明无符号类型变量或函数
enum: 声明枚举类型
struct: 声明结构体变量或函数
union: 声明共用体(联合)数据类型
void: 声明函数无返回值或无参数,声明无类型指针

  1. 控制语句关键字
  • A循环语句

for: for循环语句关键字
do: do while 循环语句关键字
while do while 或者 while 循环语句关键字
break: 跳出当前循环
continue: 结束当前循环,开始下一轮循环

  • B条件语句

if: 条件语句
else:条件语句否定分支(与if连用)
goto: 无条件跳转语句

  • C开关语句

switch: 用于开关语句
case: 开关语句分支
default: 默认case处理的语句(所有case不满足时执行)

  • D返回语句

return: 子程序返回语句(可以带参数,也可以不带参数)

  1. 存储类型关键字(4个)

auto: 自动类型说明符(让编译器自动去分析表达式所属的类型)
extern: 声明其它文件变量而非定义它(也可以看作是引用变量)
register: 声明寄存器变量(变量存在CPU内部寄存器中,而不是通过内存寻址访问)
static: 声明静态变量或函数(静态函数只能在本源文件中使用)

  1. 其它关键字(4个)

const: 声明只读变量
sizeof: 计算数据类型长度
typedef: 给已经存在的类型起别名
volatile: volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,告诉编译器对该变量不做优化,都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问。

C++中其它关键字的解释:

  1. alignas: alignas关键字用来设置内存中对齐方式,最小是8字节对齐,可以是16,32,64,128等。
  2. friend: friend关键字用于声明类的友元,友元可以直接访问其属性。无论是public/protected/private,友元函数或者友元类都可以访问。
  3. bool、true、false: bool即为布尔类型,属于基本类型中的整数类型,取值为真和假。true和false是具有布尔类型的字面量,为右值,即表示真和假。
  4. alignof: alignof得到字节对齐后的字节数.
  5. decltype、auto: auto关键字是在编译时通过已经初始化的变量来确定auto所代表的类型, decltype的类型推导并不是像auto一样是从变量声明的初始化表达式获得变量的类型,而是总是以一个普通表达式作为参数,返回该表达式的类型,而且decltype并不会对表达式进行求值。
  6. reinterpret_cast:reinpreter_cast (expression), type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。
  7. try、catch、throw: try语句块是用来判断是否有异常;catch语句块捕捉异常,并进行处理;throw是抛出异常;
  8. asm: asm是一个语句的分隔符。不能单独出现,必须接汇编指令,一组被大括号包含的指令或一对空括号。
  9. delete、new: new、delete属于操作符,可以被重载。new表示向内存申请一段新的空间,申请失败会抛出异常。new会先调用operator new函数,再在operator new函数里调用malloc函数分配空间,然后再调用构造函数。delete不仅会清理资源,还会释放空间。delete先调用析构函数,其次调用operator delete函数,最后在operator delete函数里面调用free函数。malloc申请内存失败会返回空。free只是清理了资源,并没有释放空间。
  10. inline: inline(内联)函数的定义将在编译时在调用处展开。inline 函数一般由短小的语句组成,可以提高程序效率。
  11. typeid: typeid运算符用来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回变量的相应type_info数据,通过name成员函数返回类型的名称。
  12. typename: "typename"是一个C++程序设计语言中的关键字。当用于泛型编程时是另一术语"class"的同义词。这个关键字用于指出模板声明(或定义)中的非独立名称(dependent names)是类型名,而非变量名。
  13. dynamic_cast:dynamic_cast(动态转换),允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构安全地转换类型。dynamic_cast 提供了两种转换方式,把基类指针转换成派生类指针,或者把指向基类的左值转换成派生类的引用。
  14. namespace:关键字namespace允许你创建一个新的空间.名字由你选择,忽略创建没有命名的名字空间。
  15. static_assert: static_assert ( 布尔常量表达式 , 消息 ),static_assert是编译期间断言的,所以第一个参数必须是常量。如果布尔常量表达式为真,则static_assert无作用;如果布尔常量表达式为假,则它就会发布一个编译时的错误,错误的提示就是第二个参数。
  16. using:在当前文件中引入命名空间;在子类中使用 using 声明引入基类成员名称。
  17. static_cast

static_cast < type-id > ( expression )
该运算符把 expression 转换为 type-id 类型,但没有运行时类型检查来保证转换的安全性。

  1. virtual:关键字virtual 能用来创建虚函数,派生类可以不重写此函数.但是假如函数被作为一个纯的虚函数 (被=0表示)时, 这种情况一定要重写此函数,不然无法构造对象,变成抽象类。

virtual return-type name( parameter-list );
virtual return-type name( parameter-list ) = 0;

  1. char、wchar_t、char16_t、char32_t
  • char(字符,character)类型,C++ 中的基本数据结构,其值一般为 0~255 的 int。这 256 个字符对应着 256 个 ASCII 码。char 类型的数据需要用单引号 ’ 括起来。
  • wchar_t 是宽字符类型,每个 wchar_t 类型占 2 个字节,16 位宽。汉字的表示就要用到 wchar_t。
  • 类型 char16_t 和 char_32_t 则为 Unicode 字符集服务(Unicode 是用于表示所有自然语言中字符的标准)。
  1. explicit:阻止隐式转换的发生。
  2. noexcept:
  1. noexcept 标识符有几种写法: noexcept、noexcept(true)、noexcept(false)、noexcept(expression)、throw()。
    其中 noexcept 默认表示 noexcept(true)。
    当 noexcept 是 true 时表示函数不会抛出异常,当 noexcept 是 false 时表示函数可能会抛出异常。
    throw()表示函数可能会抛出异常, 不建议使用该写法, 应该使用 noexcept(false), 因为 C++20 放弃这种写法.
  2. noexcept 函数用来检查一个函数是否声明了 noexcept, 如果声明了noexcept(true)则返回true, 如果声明了noexcept(false)则返回false.
  1. export: 为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字 extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准 C++ 新增加的关键字 export(导出)。
  2. class: class(类)是 C++ 面向对象设计的基础。使用 class 关键字声明一个类。
  3. operator:operator(操作符)用于操作符重载。这是 C++ 中的一种特殊的函数。
  4. template: template(模板),C++ 中泛型机制的实现。
  5. private、public: private(私有的),C++ 中的访问控制符。被标明为 private 的字段只能在本类以及友元中访问。public(公有的),C++ 中的访问控制符。被标明为 public 的字段可以在任何类。
  6. this: this 返回调用者本身的指针。
  7. const、constexpr: 表示常数表达式。与 const 相同,它可应用于变量,因此如果任何代码试图修改该值,均将引发编译器错误。与 const 不同,constexpr 也可应用于函数和类构造函数。 constexpr 指示值或返回值是常数,并且如果可能,将在编译时计算值或返回值。
  8. protected:protected(受保护的),C++ 中的访问控制符。被标明为 protected 的字段只能在本类以及其继承类和友元中访问。
  9. thread_local:有且只有thread_local关键字修饰的变量具有线程周期(thread duration),这些变量(或者说对象)在线程开始的时候被生成(allocated),在线程结束的时候被销毁(deallocated)。
  10. const_cast

const_cast<type_id> (expression)
该运算符用来修改类型的 const 或 volatile 属性。除了 const 或 volatile 修饰之外, type_id 和 expression 的类型是一样的。常量指针被转化成非常量指针,并且仍然指向原来的对象;常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值