中易网

问个C++ 关于 dynamic_cast的问题

答案:2  悬赏:20  
解决时间 2021-02-15 00:42
问个C++ 关于 dynamic_cast的问题
最佳答案

class A{
public:
A(){}
virtual void fun(){
cout<<"A fun invoked!"<}
void foo(){
cout<<"A foo invoked!"<}
};
class B: public A{
public:
void fun(){
cout<<"B fun invoked!"<}
void foo(){
cout<<"B foo invoked!"<}
};
int main(){
A* a = new A();
B* b = new B();
//B* b1 = new A(); potential error - base class downcast
(dynamic_cast  (b))->fun(); //alredy overrided, b foo invoked
(dynamic_cast  (a))->fun(); //cause runtime error because of downcast
导致运行时错误,因为向下转换了,
指针的转换可以从派生类转换为基类,不可以从基类转换为派生类
(dynamic_cast  (b))->foo(); //a foo invoked
(dynamic_cast  (a))->foo(); //b foo invoked
return 0;
}
全部回答
这两句话, 没有实质区别...
一个是c的形式, 一个是C++的形式.
就是把 基类指针 转换成 子类指针.
这个必须要 显示转换(否则会有编译错误), 因为它是向下转换.
C1 * p = new C2() // 这个是向上转换, 它是自动的, 可以隐式转换.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求类似《仙风制药》的小说。比如《星际画师》
2010年10月6日结婚好不好?
在word中添加水印之后打印出来的作用是什么?
新疆伊利是个县还是市
建武五金在什么地方啊,我要过去处理事情
求翻译 君子之修行也,其未得之也,则乐其意;既
谈恋爱会经过那几个阶段最后选择结婚?
洁新干洗店地址有知道的么?有点事想过去
储水式电热水器怎么节能
使用画图的工具调整大小,勾选保持纵横比减小
跪求,从周口到鹿邑最早的一班车和末班车是几
硅稳压管稳压电路适用什么场合?”
潮道里在什么地方啊,我要过去处理事情
婆家人的不信任和老公的不在乎,我该怎么办?
林塘坞在哪里啊,我有事要去这个地方
推荐资讯
【求科普】手办术语
“菡”的正确读音
怎样消除客户的反对意见?
有人吗,有图片这个问题就那么难吗
2016年12月21日阳历是预产期那末次月巾是什么
正元汽车配件·空调商行地址有知道的么?有点
台山斗山浮石浮石西卫生站(三坊鹅兜山公园东
我房子被益娄高速征收了,钱也没全部到位.我
金鑫假日宾馆在哪里啊,我有事要去这个地方
去西藏高原反应的感觉会是怎么样的
阴阳师攻略里神秘妖怪得到的觉醒怎么用
涟水县公安局高沟公安检查站在什么地方啊,我
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?