- 最好使用c++的转型操作符
c++的转型操作符有4个:static_cast,const_cast,dynamic_cast,reinterpret_cast
static_cast
//假如你想将int转型为double
int num1,num2;
static_cast<double>(num1)/num2;
const_cast
//const_cast是用来剔除某个对象的常量性或变易性,却无法进行继承体系下的转型操作
class w{};
class swe:public w {};
void updat(swe *psw);
swe sw;
const swe& csw=sw;
updat(const_cast<swe*>(&csw))
w *pw=new sw;
updat(pw)//错误,pw是w*,而函数需要swe*
dynamic_cast
//用来在继承体系下的“安全向下转型,或跨系转型动作”并会得知转型是否成功,如果失败将null指针(当转型对象是指针)或者是exception(当转型对象是引用)表现出来
w *pw;
updat(dynamic_cast<swe*>(pw));
//该操作符无法适用于缺乏虚函数的类型上,也不能改变类型的常量性
reinterpret_cast
//该该操作符的转换结果几乎总是与编译平台息息相关,所以它不具有移植性
//该操作符最常用用途是转换“函数指针”类型
//不到走投无路,尽量避免使用函数指针转换
typedef void(*funcptr)();
funptr funcptrarray[10];
int dosomething();
funcptrarray[0]=reinterpret_cast<funcptr>(&dosomething);