c++数据类型转换

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。

 

posted @ 2020-07-06 22:00  凌青语  阅读(301)  评论(0编辑  收藏  举报