首页 > 编程语言 > 详细

C++显式转换

时间:2014-03-18 14:42:25      阅读:465      评论:0      收藏:0      [点我收藏+]

标准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

C++显式转换

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!