PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 请问继承/virtual function的打印顺序
楼主:
liptonbin
(我还存在耶)
2015-03-11 22:58:23
请教一下
class Base{
public:
virtual void func{cout<<"Base"<<endl;}
};
class Derived1:public Base{
public:
void func(){cout<<"Derived1"<<endl;}
};
class Derived2:public Derived1{
public:
void func(){cout<<"Derived2"<<endl;}
};
int main(){
Derived2 *ptr_b=new Derived2;
ptr_b->func();
Derived2 *ptr_a=dynamic_case<Derived1 *>(ptr_b);
ptr_a->func();
Base *ptr_bs=dynamic_case<Base *>(ptr_b);
ptr_bs->func();
delete ptr_b;
}
请问为什么会打印?
ans:
Derived2
Derived2
Derived2
谢谢
作者:
Jockey66666
(往事已成追忆)
2015-03-11 23:28:00
因为 Derived2 *ptr_b=new Derived2;
楼主:
liptonbin
(我还存在耶)
2015-03-11 23:46:00
我是想问后面那两个 第一个印法我知道
作者:
littleshan
(我要加入剑道社!)
2015-03-12 00:40:00
因为 ptr_a 和 ptr_bs 实际上都指向 Derived2 object如果这不在你的预期之内,表示你对virtual的理解有误然后,问问题时至少先让你的程式能compile吧...
作者:
carylorrk
(carylorrk)
2015-03-12 01:29:00
先不说这个,你听过多型吗?
作者:
kwpn
(ITSST)
2015-03-12 13:06:00
dynamic_case是哪一种case?
楼主:
liptonbin
(我还存在耶)
2015-03-12 21:17:00
我是参考这个
" target="_blank" rel="nofollow">
第四页
作者:
Jockey66666
(往事已成追忆)
2015-03-12 21:45:00
你打错字那个就不说了, 因为你new Derived2所以才是Derived2阿..
继续阅读
[问题] Indent 排版问题
TwoBillion
[问题] UVA 401问题
ssadd502227
[问题] opencv火焰辨识
qoo1042
[问题] 印每一个byte 用float存的数值
Rohan
[问题] 使用宏+循环
ansonguy
[问题] MFC CFontDialog 字型抓取
jimmyoic
[问题] C++读档写入问题..
zstyle
[问题] 关于thread 调用问题
tas72732002
[问题] 关于抓取数列
rockken
[问题] 新手想请教一行程式码
wayne78117
Links
booklink
Contact Us: admin [ a t ] ucptt.com