zoukankan      html  css  js  c++  java
  • 新型的类型转换

    c方式的强制类型转换

    (Type)(Expression)

    Type(Expression)

    c方式强制类型转换存在的问题

    过于粗暴

      任意类型之间都可以进行转换,编译器很难判断其正确性

    难于定位

      在源码中无法快速定位所有使用强制类型转换的语句

    问题:

    强制类型转换在实际工程中是很难完全避免的!

    如何进行更加安全可靠的转换?

    新式类型转换

    c++将强制类型转换分为4种不同的类型

    static_cast const_cast dynamic_cast reinterpret_cast

    用法:xxx_cast<Type>(Expression)

    static_cast强制类型转换

      用于基本类型间的转换

      不能用于基本类型指针间的转换

      用于有继承关系类对象之间的转换和类指针之间的转换

    const_cast强制类型转换

      用于去除变量的只读属性

      强制转换的目标类型必须是指针或引用

    dynamic_cast强制类型转换

      用于有继承关系的类指针间的转换

      用于有交叉关系的类指针间的转换

      具有类型检查的功能

      需要虚函数的支持

    reinterpret_cast强制类型转换

      用于指针类型间的强制转换

      用于整数和指针类型间的强制转换

    小结

    c方式的强制类型转换

      过于粗暴

      潜在的问题不易被发现

      不易在代码中定位

    新式类型转换以c++关键字的方式出现

      编译器能够帮助检查潜在的问题

      非常方便的在代码中定位

      支持动态类型识别(dynamic_cast)

  • 相关阅读:
    .NET Core使用RabbitMQ
    微信openid和unionid区别
    .Net Core 中GC的工作原理
    .Net Core服务监控报警指标上报Prometheus+Grafana
    .Net Core基础的健康检查
    了解数据库的四种隔离级别
    IdentityServer使用ssl证书生成token
    IdentityServer客户端授权模式
    IdentityServer用户名密码模式
    IdentityServer4学习笔记汇总(实现传送门在底部)
  • 原文地址:https://www.cnblogs.com/sugarWill666/p/9063521.html
Copyright © 2011-2022 走看看