1、static_cast: 用来处理隐式转换,等同于C语言中的(NewType)Object 强转!
2、reinterpret_cast: 作用是说将指针str的值以二进制的方式解释为整型。
char* str= "hello";
int p = reinterpret<int>(str); // p=str的地址!!!
3、dynamic_cast:父类指针转换到子类指针!
class A{
void test(){};
};
class B:public A{
void test_B (){};
};
class C:public A{
void test_C (){};
};
A* obj = new B;
C* cc = dynamic_cast<B*>(obj); // cc = nullptr;
4、const_cast: 去掉对象的const属性,使对象可以修改
const_cast<type>(varible)中varible的type必须是指针,引用,或者指向对象类型成员的指针。
const int& a=3;
cosnt_cast<int&>(a) = 4;