reinterpret_cast要转换的类型必须是指针类型、引用或算术类型。
int *p=NULL;
float *q=NULL;
p = static_cast<int*>(q); //static_cast无法转换
q = static_cast<int*>(p); //static_cast无法转换
p = reinterpret_cast<int*>(q);
q = reinterpret_cast<float*>(p)
const_cast<>用于移除const对象的引用或指针具有的常量性质,可以去除const对引用和指针的限定。
int num = 100;
const int* p1 = #
int* p2 = const_cast<int*>(p1); //将常量指针转换为普通类型指针,去除const属性
*p2 = 200;
int a=100;
const int & ra=a;
const_cast<int&>(ra)=200;
//将常量引用转换为普通类型引用,去除const属性
需要注意的是,const_cast<>只能用于转换指针或引用。