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*可以转换。
回到顶部
相关文章推荐
- c++中的string常用函数用法总结
- c语言中.h文件的作用
- 话说C语言const用法
- C++ 头文件cstring,string.h,string 三者的区别
- 算法学习--快速排序
- C语言的一些习题
- MFC获取本机IP地址
- c++primer plus 2.7编程练习作业
- C语言生成带序号的文件名
- C/C++__基础类型的(=)赋值表达式的返回值
- C语言printf函数
- C++ 联合体共享变量值的计算
- 常见C++内存池技术
- C语言数组地址【元素地址及数组地址获取方法区别】
- double类型显示问题 设置显示小数点位数
- C++中const的实现细节介绍(C,C#同理)
- C++中const的实现细节介绍(C,C#同理)
- C/C++刁钻问题各个击破 位运算及其应用实例(2)
- C/C++刁钻问题各个击破 位运算及其应用实例(1)
- C++运算符