标签:
C++类型转换分为:隐式类型转换和显式类型转换
隐式转换
包括以下几种情况:
1、算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。
2、一种类型表达式赋值给另一种类型的对象:目标类型是被赋值对象的类型
3、将一个表达式作为实参传递给函数调用,此时形参和实参类型不一致:目标转换类型为形参的类型
4、从一个函数返回一个表达式,表达式类型与返回类型不一致:目标转换类型为函数的返回类型
显示转换
被称为“强制类型转换”(cast)
C 风格: (type-id)使用括号
C++风格: static_cast、dynamic_cast、reinterpret_cast、和const_cast这四个
1、const_cast
用法:const_cast<type_id> (expression)
说明:该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
注意:
必须使用指针或者引用,其实并不是真的改变原类类型(或基本类型)的const属性,它只是又提供了一个接口(指针或引用),可以
通过这个接口来改变类型值。
2、static_cast
用法:static_cast < type-id > ( expression )
说明:编译器隐式指向的任何类型转换都可以由static_cast显式的完成
3、reinpreter_cast
用法:reinpreter_cast<type-id> (expression)
说明:type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。
4、dynamic_cast
用法:dynamic_cast < type-id > ( expression )
说明:该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/tfygg/article/details/47679863