dynamic_cast的使用时是条件的:继承关系,父类必须有虚函数

\n\nclass A\n{\npublic:\n\tvirtual void f(){}\npublic:\n\tint _a = 0;\n};\n\nclass B : public A\n{\npublic:\n\tint _b = 1;\n};\n\n// A*指针pa有可能指向父类,有可能指向子类\nvoid fun(A* pa)\n{\n\t// 如果pa是指向子类,那么可以转换,转换表达式返回正确的地址\n\t// 如果pa是指向父类,那么不能转换,转换表达式返回nullptr\n\tB* pb = dynamic_cast\u003CB*>(pa); // 安全的\n\t//B* pb = (B*)pa;             // 不安全\n\tif (pb)\n\t{\n\t\tcout \u003C\u003C \"转换成功\" \u003C\u003C endl;\n\t\tpb->_a++;\n\t\tpb->_b++;\n\t\tcout \u003C\u003C pb->_a \u003C\u003C \":\" \u003C\u003C pb->_b \u003C\u003C endl;\n\t}\n\telse\n\t{\n\t\tcout \u003C\u003C \"转换失败\" \u003C\u003C endl;\n\t\tpa->_a++;\n\t\tcout \u003C\u003C pa->_a \u003C\u003C endl;\n\t}\n}\n\nint main()\n{\n\tA aa;\n\tB bb;\n\tfun(&aa);\n\tfun(&bb);\n\treturn 0;\n}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

送涂图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值