zoukankan      html  css  js  c++  java
  • C++中四种强制类型转换的区别

    static_cast:用法static_cast<type>(old)old转换成type类型(可以是类类型,基本类型之间的转换),但没有运行时类型检查来保证安全性,基类不需要有虚函数,当把派生类转化成基类指针类型时,是安全的,但把基类转化成派生类时,不会进行动态类型检查

    注意static_cast不能转换掉expressionconstvolitale或者_unaligned属性

    dynamic_cast:用法dynamic_cast<type>(old)type必须是类的指针、类的引用或者void*基类必须有虚函数,否则编译不过,而static_cast 没有这个要求,当利用dynamic_cast把基类转化成派生类类型时,会动态检验操作是否安全,如对派生类的成员函数showbook访问

    注意static_cast不能转换掉expressionconstvolitale或者_unaligned属性

    reinterpret_cast:用法reinterpret_cast<type>(expression),转换一个指针为其他类型的指针,也允许将一个指针转换为整数类型,反之亦然。这个操作符能够在非相关的类型之间进行转换,如两个不相关的类之间,或者普通类型之间的转换。慎用

    注意static_cast不能转换掉expressionconstvolitale或者_unaligned属性

    const_cast:用法const_cast<type>(old),type必须是指针,引用或者类的对象(利用引用,否则会出现析构两次对象)这个类型操纵传递对象的const属性,或者是设置或者是移除

  • 相关阅读:
    软件工程个人作业02
    第三周学习进度条
    《构建之法》阅读笔记01
    第二周学习进度条
    软件工程个人作业01
    大道至简第三章读后感
    动手动脑课后实践
    JAVA数字想加并输出
    大道至简第二章读后感
    大道至简读后感
  • 原文地址:https://www.cnblogs.com/yaowj/p/4726241.html
Copyright © 2011-2022 走看看