static_cast,const_cast,reinterpret_cast,dynamic_cast详解

static_cast,const_cast,reinterpret_cast,dynamic_cast详解
#include<iostream>

//c++的数据类型转换:static_cast<需要转换的数据类型>(要转换的数据),
//用于一般的数据类型转换
void main1(){
        int n = static_cast<int >(78.98);
        int* p = static_cast<int *>(malloc(100));
        std::cin.get();
}

//const_cast:强制去掉const属性
void main2(){
        int num[3] = { 12, 2, 3 };
        const int *p1 = num;
        //*p1 = 23;  wrong
        int *pnew = const_cast<int *>(p1);//去掉const属性
        *pnew = 46; //correct
        std::cin.get();
}

//reinterpret_cast:在地址和指针之间转换指针类型
void main3(){
        //类型决定了数据的解析方式,以及内存占多大
        float f1 = 234.423;
        int num = 3;
        char *p = reinterpret_cast<char *>(&num);
        for ( int i = 0; i < 4; i++)
        {
              std::cout << p[i] << std::endl;
        }
        std::cin.get();
}

//dynamic_cast:类的指针之间的转换
void main(){
        std::cin.get();
}
  





posted @ 2015-05-26 19:05  外禅内定,程序人生  阅读(363)  评论(0编辑  收藏  举报