码迷,mamicode.com
首页 > 编程语言 > 详细

C++类型转换

时间:2015-08-15 12:01:50      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

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也必须是一个引用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++类型转换

标签:

原文地址:http://blog.csdn.net/tfygg/article/details/47679863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!