[問題] 呼叫function 但屬於多個class問題

看板C_and_CPP作者 (Kimmy)時間13年前 (2012/02/09 07:14), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
有三個class (UE_son繼承UE_father) bool A::check(UE_son* ue) bool B::check(UE_son* ue) bool C::check(UE_son* ue) UE_son* test; UE_father* record; record->check(test); 請問當record呼叫check這個函式時,會是執行A,B,C哪個function呢? 還是這三個都會執行呢? 目前正在學C++ 麻煩各位的指教~謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.155.95

02/09 15:17, , 1F
你先實際試試看吧,依你給的程式,會在執行的時候錯誤
02/09 15:17, 1F

02/09 15:20, , 2F
要看check是否有宣告為 virtual,有的話依執行期record實際
02/09 15:20, 2F

02/09 15:21, , 3F
類別,沒有則是 father 類別的 check
02/09 15:21, 3F

02/09 15:22, , 4F
而沒有宣告 virtual 的話,father一定要有實作check,否則
02/09 15:22, 4F

02/09 15:22, , 5F
record->check 這行似乎..? A B C跟record扯不上關係阿 囧
02/09 15:22, 5F

02/09 15:23, , 6F
會編譯期錯誤
02/09 15:23, 6F

02/09 15:24, , 7F
我已經假設他改到可以執行了...XD
02/09 15:24, 7F

02/09 15:26, , 8F
他沒講清楚已經到哪個部份的,當然就隨我們假設囉(逃)
02/09 15:26, 8F

02/09 15:37, , 9F
其實你的問題早在之前james就回答過了#1BK8p46C#1Ar_jTzE
02/09 15:37, 9F

02/09 15:38, , 10F
18009 [問題] 請問在c語言virtual的函義是什麼? 也略有提到
02/09 15:38, 10F

02/09 16:04, , 11F
因為程是太長 只截取一小段 但我大概了解問題了!
02/09 16:04, 11F

02/09 16:04, , 12F
感謝各位大大!!...Q__Q
02/09 16:04, 12F
文章代碼(AID): #1FCt8zh7 (C_and_CPP)