1. static_cast
用于类型相近的内置基本类型转换(int到double,所有指针类型到void*等),或者父类和子类之间的转换(跟dynamic_cast比不检查类型)
2. reinterpret_cast
处理整型到指针,或不同类型指针之间的转换,使用时要慎重
3. const_cast
可以将指向常量的指针或引用之前的const去掉,转换为非常量的。用于一个函数的形参为非const指针,传入const指针之前要使用const_cast去掉const属性。
另外可以去掉volatile属性
4. dynamic_cast
相比前三个编译时转换,此关键字是运行时转换。用来父子类之间的转换,父类到子类转换时,可以进行类型检查,转换失败会返回NULL。