本文共 1006 字,大约阅读时间需要 3 分钟。
#include <iostream> using namespace std; /* *四种显示类型转换 **/ int main(){ /* static_case 类型转换*/ double a=1.1213; int b= static_cast < int >(a); class base{}; class father: public base{}; father f; base ba= static_cast <base>(f); /*reinterpret_cast类型转换*/ //基本类型的指针类型转换 double c=12.123; double * pc=&c; int * pi= reinterpret_cast < int *>(pc); //不相关的类的指针的类型转换 class A{}; class B{}; A* pa= new A; B* pb= reinterpret_cast <B*>(pa); delete pa; //指针转换为整数 int num= reinterpret_cast < int >(pc); //企图转换非指针类型的 //b=reinterpret_cast<int>(a); 这条语句是错误的 //企图将const指针转换为void指针 // const int * pint=0; // void* pvoid=reinterpret_cast<void *>(pint); 错误 /* const_cast 类型转换*/ const int * pint=0; int * pint1= const_cast < int *>(pint); //基于安全性的考虑,下面的转换是错误的 // const int nInt=0; // int nInt2=const_cast<int>(nInt); int * pnum=0; const int * pnum2= const_cast < const int *>(pnum); int i=0; //const int i2=const_cast<const int>(i); //不能编译通过 const int i2=( const int )i; //隐式转换可以编译通过 return 0; } |
具体的总结请参考《C++ STL开发技术导引.pdf 》第1.6小节。
转载地址:http://kbeyl.baihongyu.com/