C++ 一些关键字的解释

auto

在C++98/03中这个这个关键字用于声明块中的变量的生存期为自动生存期,

这个关键字不常用,因为即便省略,声明的默认就是auto的。

在C++11中,auto的含义改变为自动通过初值符推断声明的类型占位符。

也可以使用auto& i等声明,具体推导规则同模版参数类型推导。

 

typeid

typeid(obj)返回的是type_info的一个引用,可以用typeid(obj).name()获取类型名字。

这里有可能抛异常,如果是一个badtype,也就是说typeid有可能是RTTI的。

其中RTTI(Run-Time Type Identification,通过运行时类型识别)

使用RTTI技术的还有dynamic_cast。

 

explicit

这个关键字修饰构造函数声明,表示显式构造函数(模版),显式构造函数不参与特定的重载。

C++11从两个角度扩展了用法。其一是适用于转换函数(模版),类似构造函数,避免不需要的重载。

其二是列表初始化,除非直接使用std::initializer_list,显式构造函数被列表初始化忽略。

(在C++98/03中,explicit仅对单一参数调用构造函数有意义,这里打破了这个限制)

 

register

被视为过时的(可能在未来标准移除)。

 

volatile

指定被修饰的对象类型的读操作是副作用(因此读取不能被随便优化合并,适合映射I/O寄存器等)。

即被修饰的对象有可能在其他地方被修改。

 

static_cast

C式的强制类型转换

 

reinterpre_cast

从一种类型重新解释到另一种类型,按二进制流截取

 

dynamic_cast(try it)

子类指针或引用到基类的转换,利用虚函数表使用rtti技术达到目的,

所以如果没有虚函数表支持或者直接是两个不相关的类进行dynamic_cast会报编译错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值