C++中四种显示类型转换总结
2012-03-05 20:21 Rollen Holt 阅读(573) 评论(0) 收藏 举报#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://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
浙公网安备 33010602011771号