c++中的四种类型转换:static_cast,reinterpret_cast,const_cast,dynamic_cast
四种类型转化的区别:
static_cast:相当于C中的隐式类型转换,用于非多态类型的转换(静态转换)
例:
int main()
{
double d=12.34;
int a;
a=static_cast<int>(d);
}
reinterpret_cast:相当于C中的显示类型转换,转换的是两个没有关系的类型
typedef void(*FUNC)();
int testc(int i)
{
cout<<"test"<<endl;
}
void Test()
{
FUNC f=reinterpret_cast<FUNC>(testc);
}
const_cast用于const类型的转换
void Test()
{
const int a=10;
int* pa=const_cast<int*>(&a);
*pa=100;//修改a的值
}
修改了a 的值相当于删除了变量的const 属性,方便赋值
dynamic_cast:只能用于含有虚函数的类,先检查是否能转换,成功进行转换,失败返回空,可以将基类对象的指针或引用转换为派生类对象的指针或引用