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

C++ 四种类型转换

时间:2015-10-03 11:50:05      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

1、static_cast

  正常情况下的类型转换: int i;float f; f=(float)i;或者f=static_cast<float>(i);

 

2、const_cast

  取出const属性, 把const类型的指针变为 非const类型的指针:const int *fun(int x,int y){}  int *ptr=const_cast<int *>(fun(1,2))

 

3、dynamic_cast

  运行时检查该转换是否类型安全, 但只在多态类型时合法。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。

  class Base { virtual dummy() {} };
  class Derived : public Base {};

  Base* b1 = new Derived;
  Base* b2 = new Base;

  Derived* d1 = dynamic_cast<Derived *>(b1);          // succeeds
  Derived* d2 = dynamic_cast<Derived *>(b2);          // fails: returns ‘NULL‘

4、reinterpret_cast

  reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值。如:int i; char *ptr="hello freind!"; i=reinterpret_cast<int>(ptr);这个转换方式很少使用。

C++ 四种类型转换

标签:

原文地址:http://www.cnblogs.com/wmsir/p/4853162.html

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