您的位置:首页 > 编程语言 > C语言/C++

C++类型转换

2015-09-17 13:28 295 查看

四中类型转换

static_cast


reinterpret_cast


const_cast


dynamic_cast


static_cast

静态检测转换是否合法。

例如类A和B不相干,则
A*
不能转为
B*
。如果A继承自B,则
A*
B*
可以互相转换。

dynamic_cast

在static_cast的基础上,使用RTTI进行运行时刻类型检查,转换失败返回NULL。

例如M和N继承自A,
N*
转为
A*
后,再转为M*就会返回NULL;但是可以再转回
N*


const_cast

用来去掉const类型属性。例如将
const char*
转为
char*
。不到万不得已不要用。

啥叫万不得已呢?例如有一个旧的代码库需要传递
char*
,而实际上应该传递
const char*
,在自己的代码里自然需要使用
const char*
,到最后调用旧的代码库时再去掉const属性。

reinterpret_cast

二进制层面的类型转换,只是转换编译器编译时刻记录的类型,运行时刻不会进行任何字节层面的转换。

例如A和B不相干,A*转为B*可以转换。

回到顶部
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: