1.static_cast 实现C++内置类型的相关转换 如int double struct 等,但不能进行不是基类和子类的转换。
如 int i,double t,i=static_cast<int>(t)
2.const_cast 实现将常量指针转换成非常量指针
如 const int *a;int *b=const_cast<int *>(a);
3.dynamic_cast 运行时执行,它将基类的指针或引用安全的转换为子类的指针或引用。基类必须要有虚函数
class A
{
public:
virtual foo(){}
}
class T:public A
{
foo(){};
}
A*a=new T;
T*t;
t=dynamic_cast<T*>(a);
4.reinterpret_cast 允许任意内置的数据类型转换成其他类型
如int i, char *p="hello",i=reinterpret_cast<int>(p);