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

 

posted @   言午丶  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示