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属性,或者是设置或者是移除

  • 相关阅读:
    小程序携带参数转发
    小程序开发过程中问题终结
    在小程序中使用md5处理需要加密的字符串(含中文的字符串)
    php 字符串的处理
    PHP 数组(array)
    php数学运算
    php 单双引号的区别
    PHP 结构控制 if else / switch / while / do while
    JavaScript best practices JS最佳实践
    java入门概念梳理总结
  • 原文地址:https://www.cnblogs.com/yaowj/p/4726241.html
Copyright © 2011-2022 走看看