zoukankan      html  css  js  c++  java
  • 类型转换(动态转换)dynamic_cast

    动态转换

    • 不可以转换基础数据类型
    • 父子之间可以转换
    • 父转子 不可以
    • 子转父 可以
    • 发生多态 都可以

    1.基础类型不可以转换

    2.父子关系 向上转 可以 向下转 不安全就不可以

    注意:

    dynamic_cast如果发生了多态,那么可以让基类转成派生类,向下转换

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    //void test01()
    //{
    //    char a = 'a';
    //    //dynamic_cast非常严格 失去精度 或者不安全 都不可以转换
    //    double d = dynamic_cast<double>(a); //error 
    //}
    
    class Base 
    {
        virtual void func(){}
    };
    class Child :public Base 
    {
        virtual void func(){}
    };
    class Other {};
    
    void test02()
    {
        Base* base = NULL;
        Child* child = NULL;
    
        //Child转Base 安全
        Base* b2 = dynamic_cast<Base*>(child);
    
        //Base转为Child 不安全
        //Child* c2 = dynamic_cast<Child*>(base);
    
    
        //dynamic_cast如果发生了多态,那么可以让基类转成派生类,向下转换
        Base* base2 = new Child;
        Child* child2 = dynamic_cast<Child*>(base2);
    }
    int main()
    {
    
        system("Pause");
        return 0;
    }
  • 相关阅读:
    科技小论文
    一线架构—细化架构
    python20.04.10
    软件架构总结
    信息领域热词分析
    架构即未来阅读笔记二
    构架即未来阅读笔记一
    科技小论文之软件质量
    Pre-architecture的需求
    软件质量
  • 原文地址:https://www.cnblogs.com/yifengs/p/15182735.html
Copyright © 2011-2022 走看看