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

    一.简介

    二.static_cast<>

     

    三.dynamic_cast<>

    dynamic_cast 具有类型检查的功能,比 static_cast 更安全

    dynamic_cast 将指向基类(父类)的指针或者引用转换成指向这个基类派生类(子类)的指针或者引用,转换成功将会得到派生类的指针或者引用,如果失败将会返回一个null

     dynamic_cast 运算符是将一个指向基类的指针转换成指向派生类的指针,如果失败,返回空指针,在类层次之中向上转换

    dynamic_cast 是将一个基类对象指针(或引用)转换到继承类指针,dynamic_cast 会根据基类指针是否真正指向继承类指针来做相应的处理,父类一定要有虚函数

     注意:子类指针无法指向父类,子类指针也无法转化为父类指针

                父类指针可以指向子类,父类指针也可以转化为子类指针

    /** 子类转父类 */
    F* f = new F();
    Z* z = dynamic_cast<Z*> (f);  //出错,子类无法转父类
    
    
    /** 父类转子类 */
    Z* z = new Z();
    F* f = dynamic_cast<F*>(z);  //成功,父类可以转子类

    四.RTTI(Run Time Type info)

    RTTI存储类的相关信息,用于在运行时识别类对象的信息

    C++里面提供一个关键字 typeid  一个数据类型 typeinfo  对应的头文件 typeinfo.h

  • 相关阅读:
    jQuery里使用setinterval
    关于java以及JavaScript或者更多的语言中Data类的问题
    重置input checked
    利用CSS变量实现悬浮效果
    vue 可编辑表格组件
    js 可拉伸表格
    vue 自定义拖拽指令
    vue 表格导出excel
    vue 侧边导航栏递归显示
    RUP(Rational Unified Process)统一软件过程概述
  • 原文地址:https://www.cnblogs.com/k5bg/p/11457421.html
Copyright © 2011-2022 走看看