C++四种类型转换

来源:互联网 发布:吉诺比利巅峰数据 编辑:程序博客网 时间:2024/06/04 00:24

1、static_cast

1.上行转换,把派生类的指针或引用转换成基类,此时是安全的

2.下行转换,把基类的指针或者引用转换成派生类,因为没有动态监测,所以是不安全的

  3.显示类型转换,如Int转float等 

4.任意类型空指针转任意类型空指针

5.任意类型表达式转为void类型

代码如下:

int a = 4;float f = static_cast <float>(a);void *pa = &a;int *pb = static_cast <int*>(pa);
class Base{virtual void A(){cout << "a" << endl;}};class B :public Base{void A(){cout << "b" << endl;}};Base *base = new Base;B *b = static_cast<B*>(base);



2、const_cast

1.常量指针被转成非常量指针并指向原对象。

2.常量引用被转成非常量引用并指向原对象。

const B *b1;B* b2 = const_cast<B*>(b1);


3、dynamic_cast

下行转下行的时候会检测,比static_cast安全。不成功返回NULL。

4、reinterpret_cast

   它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,
    在把该整数转换成原类型的指针,还可以得到原先的指针值)。
    该运算符的用法比较多。

0 0
原创粉丝点击