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

    一直觉得没写的必要,但还是记一下吧。太书面化记不住,就简单些下。

    类型转换分为隐式类型转换和强制类型转换。

    隐式类型转换是编译器自动执行,无需程序员介入。如下:

    //算术转换
    double b = 5 + 3;
    //条件表达式
    int val = 0;
    if (val)...
    ...
    

    强制转换就是要在代码中写明的转换,具有危险性。

    C风格是:(type) xx;C++提供了四种转换:static_cast、dynamic_cast、reinterpret_cast、const_cast。

    static_cast<type-id>(expression)

    编译时期进行的转换,没有运行时的类型检查。常用于:

    1.基类和子类之间的下行转换

    2.void*到原来指针的转换

    3.避免出现可能多种转换的歧义

    dynamic_cast<type-id>(expression)

    运行时期的类型转换,用于将基类类型的指针或引用安全的转换为子类类型的指针或引用,有类型检查的功能,比较安全。

    当转换指针类型失败时,返回0;当转换引用类型失败时,抛出bad_cast异常。

    常用于类层次间的上下行转换,主要的场景是无法使用virtual函数-使用子类自己新增的函数


  • 相关阅读:
    多线程
    事务的概念与四大特性(ACID)
    Error和Exception的区别
    运算符的使用与注意事项(二)
    运算符的使用与注意事项(一)
    GOJS使用--前端拓扑图
    python算法实现分治法demo
    MySQL主从复制配置
    MySQL锁
    show profile查看SQL执行生命周期
  • 原文地址:https://www.cnblogs.com/whuqin/p/4981995.html
Copyright © 2011-2022 走看看