1.static_cast:用于非多态类型转换(静态转换),任何标准转换都可以用它,但是不能用于两个不相关的类型转换。
2.reinterpret_cast:将一种类型转换为另一种不同的类型。
3.const_cast:删除变量const的属性,方便赋值
4.dynamic_cast:用于将一个父类对象的指针转换为子类对象的指针或引用。(动态交换)
static_cast
int i = 10;
double b = static_cast<double>(i);
cout << i << " " << b << endl;
reinterpret_cast
int i = 10;
int* b = reinterpret_cast<int*>(i);
cout << i << " " << b << endl;
const_cast
const volatile int i = 3;
int* p = const_cast<int*>(&i);
*p = 3;
cout << p << " " << i << endl;
dynamic_cast
class A
{
public:
virtual void show()
{
cout << "ambition" << endl;
}
int a;
private:
};
class B:public A
{
public:
int b;
private:
};
void Func(A* a)
{
B* b = dynamic_cast<B*>(a);
if (b != NULL)
{
b->a = 20;
b->b = 10;
}
else
{
b->a = 30;
}
}
参考:https://blog.csdn.net/alidada_blog/article/details/83536149