zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    常用命令-eval简析
    bash手册 之重定向原理与实现
    TCP/IP 编程
    SQL Server存储内幕系列
    ORACLE优化器RBO与CBO介绍总结
    24小时学通LINUX内核系列
    SQL Server 优化器+SQL 基础
    JAVA 强引用、软引用、弱引用、虚引用
    iOS 如何做才安全--逆向工程
    Python 基础学习
  • 原文地址:https://www.cnblogs.com/lingqingyu/p/13257842.html
Copyright © 2011-2022 走看看