温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

dynamic_cast<type-id>(expression)

发布时间:2020-07-15 09:07:18 来源:网络 阅读:403 作者:神ge 栏目:编程语言
#include <iostream>                                                             
using namespace std;
#include <typeinfo>
class A{
    public:
        virtual void foo(void){}
};
class B:public A{
    void foo(void){}
};

class C:public A{
    void foo(void ){} 
};

int main(void){
    B b;
    A* pa= &b; 
    B* pb = dynamic_cast<B*>(pa);//pa是指向B类型的基类指针,OK
    //C* pc = dynamic_cast<B*>(pa); //pa不是指向C类型的基类指针,error

    B b1; 
    A& ra = b1;
    B& b2 = dynamic_cast<B&>(ra);
    //C& c1 = dynamic_cast<C&>(ra);error
    return 0;
}                                                                               
 
 上面两个错误都是,编译时不报错,运行时报错.
dynamic_cast主要是将指向子类的基类指针转化为子类的指针
转换过程中会检查目标和期望转换的对象是否一致,一致转换
成功,否则失败,如果转换为指针,则失败返回NULL,如果是引用失败
返回bad_cast异常


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI