本文主要是介绍C++中的类型转换,以及与C的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编程的时候,类型转换在某些紧要的关头是必需品。
C风格的类型转换,相对C++风格的类型转换来说,比较粗鲁,C风格的类型转换,能允许任何类型之间进行转换,在编写C++程序时是也可以使用的,要进行精确的类型转换时,这是一个优点。但是,正是这样的优点,使C风格的类型转换,在编写程序时,容易出现类型不明,转换失误,并且在程序语句中难以识别,可读性较差,在编写C++程序时,建议使用C++中的类型转换。
C++中的类型转换操作符有四个,分别是:static_cast,const_cast,dynamic_cast,reinterpret_cast
C的类型转换使用格式为:(type)expression
C++的类型转换格式为:static_cast<type>(expression)
static_cast:此操作符的功能上基本与C风格的类型转换一样强大,含义也相同,但是功能上有一定的限制:
比如:1.不能吧struct转换层int,或者,double转换成指针类型等
2.不能去除const属性,需要用另一个类型转换操作符const_cast
const_cast:用于类型转换掉表达式const或者volatile属性,其他类型的转换操作,在执行语句时,将被拒绝
其最普遍的用途就是转换掉const属性
dynamic_cast:被用于安全的沿着类的继承关系下进行的类型转换
可以用过返回值判断其类型转换是否成功:
1.当对指针类型操作时,返回空指针表示失败
2.当对应用对象进行类型转换时,将抛出异常表示失败
要注意的点是:
1.该类型转换无法转换const修饰的类型
2.不能用于缺乏虚函数的类型上
ps:没有继承关系的建议使用static_cast进行转换,若有const修饰的,建议用const_cast进行转换
reinterpret_cast:转换结果几乎都是执行期定义,因此,使用该类型操作符进行转换的代码将降低可移植性
该类型转换操作符常用与函数指针类型之间进行转换
PS:转换函数指针的代码是补课移植的
这篇关于C++中的类型转换,以及与C的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!