C++显式转换

时间:2014-03-18 14:42:25   收藏:0   阅读:470

标准C++包含一个显式的转换语法:

--static_cast:用于“良性”和“适度良性”的转换,包括不用强制转换

--const_cast:用于“const”和/或“volatile”进行转换

--reinterpret_cast:转换为完全不同的意思。为了安全的使用它,关键必须转换回原来的类型。转换成的类型一般只能用于位操作,否则就是为了其他隐秘的目的。这是所有转换中最危险的。

--dynamic_cast:用于类型安全的向下转换

 

-----常用-----

static_cast:用于所有明确定义的转换,包括void*的强制转换、隐式类型转换、类层次的静态定位。

1. 数据类型由小到大的转换,比如int转换为long或float;

int i ; static_cast<long>(i); static_cast<float>(i);

2. 窄化转换,即数据类型由大到小的转换,可能丢失数据;

3. c++中是不允许对一个void*类型的数据赋值的;

void* ptr;  ptr = static_cast<void*>(i);

 

const_cast:常量转换,如果从const转换为非const或从volatile转换为非volatile,可以使用const_cast。这是const_cast唯一允许的转换。

volatile int k = 0;   int* u = const_cast<int*>(&k);

C++显式转换,布布扣,bubuko.com

原文:http://www.cnblogs.com/davidsguo008/p/3607584.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!