动态运行时类型识别与显式转换

1、typeid
通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际类型。

c++可以通过下面两个操作提供RTTI
1、typeid操作符,返回指针或引用所指对象的实际类型。
2、dynamic_cast操作符,将基类类型的指针或引用安全的转换为派生类型的指针或引用。

用法:

Base *bp;
Derived *dp;
if(typeid(*bp)==typeid(*dp)){```}1
if(typeid(*bp)==typeid(Derived)){```}2

1、比较bp所指对象与dp所指对象的实际类型,如果它们指向同一个类型,则测试成功。类似的,如果bp当前指向derived对象,则2测试成功
显式转换
强制类型转换符:static_cast、dynamic_cast、const_cast,reinterpret_cast。
reinterpret_cast
之前是采用圆括号将类型括起来实现

int *p;
char *pc=reinterpret_cast<char*>(ip);

效果等同于:

int *ip;
char*pc=reinterpret_cast<char*>(ip);

const_cast
转换掉const性质

const char *pc_str;
char *pc=const_cast<char*>(pc_str);

例如:

const double value=0.0f;
double* ptr=NULL;

怎么让ptr指向value?
强制类型转换,去掉const属性

ptr=const_cast<double*>(&value)

static_cast
编译器隐式执行的任何类型转换都可以有static_cast显示完成:

都变了double d=                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       97.0;int i=static_cast<int>(d);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值