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:只能用于含有虚函数的类,先检查是否能转换,成功进行转换,失败返回空,可以将基类对象的指针或引用转换为派生类对象的指针或引用
本文详细介绍了C++中四种类型转换:static_cast, reinterpret_cast, const_cast和dynamic_cast的使用方法及区别。static_cast用于非多态类型的转换;reinterpret_cast用于转换两个没有直接关系的类型;const_cast用于去除const属性;dynamic_cast用于多态类之间的转换。
587

被折叠的 条评论
为什么被折叠?



