1.static_cast
float x;
cout << static_cast<int>(x);
f(static_cast<string>("hello");
2.dynamic_cast
将多态类型向下转型
class Car;
class Cabriolet : public Car {...};
class Limosine : public Car {...};
void f(Car* cp){
Cabriolet* p = dynamic_cast<Cabriolet*>(cp);
if(p == NULL){
.........
}
}
当类型转换失败,dynamic_cast会抛出一个bad_cast异常
注意:当运用多态技术时,应避免这种"程序行为取决于具体类型"的写法
3.const_cast
设定或去处类型的常数性,也可去处volatile修饰
4.reinterpret_cast
使用此转型动作通常会带来不可移植性