1. static_cast static_cast<type-id> (expression)。
不做任何类型检测,直接转换,不保证安全性。可用于基本数据类型和指针的转换。
如果expression有带属性,如const,volatile、或者__unaligned属性,不能转换。
这个转换和用()里面加类型强制转换用法差不多,用static_cast可以更好的定位哪里的变量有进行类型转换。
2. const_cast const_cast<type-id> (expression)。
可以转换带有const和volatile的指针和其引用。
3. reinterpret_cast reinterpret_cast<new_type> (expression)。(重解释转换)
这是一种非常不安全的转换机制,最有可能出问题。
这个转换时讲一个对象假想为完全不同的类型,和原来的类型拥有相同的比特位。
4. dynamic_cast dynamic_cast<type-id> (expression)
这是一种安全的类型转换,运行时会进行类型检测。
express必须为指针或者引用,且类中必须有虚函数才能编译通过。
5. boost库提供了一个lexical_cast 转换
可用于基本类型的数据转换,字符串,整形浮点之间相互转换。
6. implicit_cast和down_cast
上行转换时可使用implicit_cast代替static_cast 因为编译器会做类型安全检测。
下行转换时可用down_cast是替换dynamic_cast。
原文:https://www.cnblogs.com/lingqingyu/p/13257842.html