Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

C++类型转换

$
0
0

C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。


const_cast,字面上理解就是去const属性。

static_cast,命名上理解是静态类型转换。如int转换成char。
dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。

reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。


static_cast数值类型之间,有一方是void*的指针类型之间
const_cast用于临时去掉const、volatile限制
reinterpret_cast任意两种指针类型之间,指针于数值类型之间

reinterpret_cast:仅仅重新解释类型,但没有进行二进制的转换:


#include <iostream>
using namespace std;
#include <cstdlib>

int main()
{
    int n = static_cast<int>(45.67);
    int* p = static_cast<int*>(calloc(sizeof(int),10));
    free(p);
    const int k = n;
    cout << "k=" << k << endl;
    const_cast<int&>(k) = 789;
    cout << "k=" << k << endl;
    float f=123.45;
    p = reinterpret_cast<int*>(&f);
    cout << *p << endl;
    n = int(12.34);
    cout << "n=" << n << endl;
    n = int();
    cout << "n=" << n << endl;
    int m(100);
    cout << "m=" << m << endl;
    int x();//函数声明
    int(y)=200;//尽量不用,容易跟强制类型转换混淆
    cout << "y=" << y << endl;
}

去const属性用const_cast。
基本类型转换用static_cast。
多态类之间的类型转换用daynamic_cast。
不同类型的指针类型转换用reinterpret_cast。

作者:zhaoming262350 发表于2013-11-19 8:20:49 原文链接
阅读:79 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>