https://www.jb51.cc/csharp/1192462.html
编程之家收集整理的这篇文章主要介绍了C++类型如何进行转换,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
方法:1、static_cast,用于非多态类型的转换;2、reinterpret_cast,转换成另一种不相关类型;3、const_cast,删除变量的const属性,再赋值;4、dynamic_cast,用于类继承层次间指针或引用转换。
本教程操作环境:windows7系统、C++17版本、Dell G3电脑。
C++为了规范C中的类型转换,加强类型转换的可视性,引入了四种强制类型转换操作符:static_cast, reinterpret_cast, const_cast, dynamic_cast
他们本质上都是模板类。
下面分别来介绍:
1.static_cast
它用于非多态类型的转换(静态转换),对应于C中的隐式类型转换,但他不能用于两个不相关类型的转换,如整形和整形指针之间的转换,虽然二者都是四个字节,但他们一个表示数据,一个表示地址,类型不相关,无法进行转换。
该转换在编译时完成,和C风格的类型转换相似,不过要注意下面几点
不能在没有派生关系的两个类类型之间转换
不能去除掉原有类型的类型修饰符,例如const,volatile,__unaligned
转换对象时由于没有动态类型检查,所以由基类对象转换成派生类对象的时候存在安全隐患
2.reinterpret_cast
reinterpret的含义是重新解释,可将一种类型转换成另一种不相关类型,对应C中的强制类型转换,处理无法进行隐式转换的情况
强制类型转换有时可以很暴力的处理一些问题