C++强制类型转换

来源:互联网 发布:纵横数据 编辑:程序博客网 时间:2024/05/16 19:09

为了完成强制类型转换,C++中已经为我们提供了4中标准方法,

它们是dynamic_cats, static_cast, const_cast, reinterpret_cast,

用法形式为:dynamic_cast<类型说明符>(表达式),之所以分成4类,就表示他们各自有着不同的使用环境

dynamic_cast最好些,它检查的更严格些,其次是static_cast,而后两者也就是const_cast和reinterpret_cast较之前两者貌似不太常用,而且也不推荐使用,const_cast在用于去除const的地方还是有所发挥的,reinterpret_cast在转换时,不会在内存中进行补足比特位(例如int转换到double,需要补足4字节),这往往是不安全的,而且代码也是不可移植的。

dynamic_cast:   通常在基类和派生类之间转换时使用,run-time   cast
const_cast:   主要针对const和volatile的转换. 
static_cast:   一般的转换,no   run-time   check.通常,如果你不知道该用哪个,就用这个。   

reinterpret_cast:   用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。

注:volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。



0 0
原创粉丝点击