c++中比较罕见的关键字

c++关键字:在这里插入图片描述

1. mutable

为了打破c++函数const限制而出现的一个关键字。mutable修饰的变量表示可变的,在被const修饰的类成员函数中,不能改变类中的所有数据成员,但如果某个数据成员确实和const无关,需要改变,可以将这个数据成员用mutable来修饰。

2. explicit

一般用在构造函数中,指明构造函数不能发生隐式类型转换。

3. export

  • 通常使用extern对于跨编译单元的变量和对象进行引用,但是对于模板类型来说,通常声明和定义都在头文件中,因为当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明。
  • 另外一个方法就是使用关键字“export”!你可以在.h文件中,声明模板类和模板函数;在.cpp文件中,使用关键字export来定义具体的模板类对象和模板函数;然后在其他用户代码文件中,包含声明头文件后,就可以使用该这些对象和函数了(模板分离编译模式(Separation Model))
  • export关键字在C++11前用于标注一个模板定义被导出,这允许在其他翻译单元中申明,但不定义同一模板。C++11后 不使用,并保留该关键字。
    export参考2
    export参考
    export的讨论

4. volatile

  • 易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。volatile的这个特性,相信也是大部分朋友所了解的特性。
  • 不可优化。volatile告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中的指令,一定会被执行。
  • 顺序性。C/C++ Volatile变量,与非Volatile变量之间的操作,是可能被编译器交换顺序的。
    volatile的探索

5. register

register修饰后的变量会尽可能的放到寄存器中,每次取值尽量在寄存器而非内存中取值。
参考
c++和c关于register的比较

6. typeid

是一个运行时类型识别(RTTI(Run-Time Type Identification))的操作符,返回一个type_info结构体,结构体中的name函数返回当前变量的类型,需要包含 #include <typeinfo>。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值