static_cast

本文探讨了C++中static_cast的应用,特别是在多态情况下从派生类到基类再转换回不同派生类的过程。通过具体示例展示了如何进行类型转换,并讨论了这种转换可能带来的问题,如虚函数调用的不匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static_cast 的 一个新认识

1. CDerive_1, CDerive_2  都继承自 CBase.

2. CBase 有虚函数, CDerive_1, CDerive_2都有各自的实现。

3. CDerive_1  derive_1;

    CBase* base = static_cast<CBase*>(derive_1);

    CDerive_2* derive_2 = static_cast<CDerive_2*>(base);

    derive_2->虚函数。。。。 // 这里 将会 执行 derive_1的虚函数。

     derive_2->derive_2的函数, // 编译正确,运行未知, 但是 这里将会执行 derive_2的 函数。

     derive_2->derive_2的特有虚函数, // 运行时错误,无法在虚函数表中找到这个虚函数,因为使用的还是 derive_1的虚函数表指针。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值