dynamic_cast<type-id>(expression)

#include                                                              
using namespace std;
#include 
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(pa);//pa是指向B类型的基类指针,OK
    //C* pc = dynamic_cast(pa); //pa不是指向C类型的基类指针,error

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

本文题目:dynamic_cast<type-id>(expression)
URL分享:http://www.hxwzsj.com/article/gedods.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 营销型网站建设 成都品牌网站建设 成都网站建设 企业网站建设公司 手机网站建设套餐 定制网站设计 网站建设方案 成都网站建设 手机网站制作设计 品牌网站建设 成都网站建设 成都h5网站建设 成都网站制作 定制网站制作 重庆网站建设 重庆网站设计 成都网站建设 企业手机网站建设 成都网站制作 成都网站建设 H5网站制作 网站设计制作报价