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