[問題] 請教多型的觀念?

看板C_and_CPP作者 (Hypnus)時間13年前 (2011/05/25 21:41), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
最近剛開始要接觸多型的觀念,我試寫了以下程式碼: http://pastie.org/1971223 是想將Print()設為虛擬函數,當main裡面執行Base y = test()時,test()會 return一個class A的物件,因此y.Print()時希望能輸出class A的Print()內 容 (就是輸出Class A: 25) 不過執行結果並不是這樣,它依舊是輸出class Base的Print()內容,請問我這 樣寫是哪邊搞錯了?要怎麼改才能照希望的結果輸出? 謝謝各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.201.221

05/25 21:43, , 1F

05/25 21:43, , 2F
試試看把 test 的回傳改成 Base*
05/25 21:43, 2F

05/25 21:44, , 3F
被 slice 掉了 ... 多型物件不能 pass by value
05/25 21:44, 3F

05/25 21:46, , 4F
你以前寫 JAVA 的嗎
05/25 21:46, 4F
謝謝解答!我以前是寫JAVA的 ※ 編輯: Hypnus 來自: 114.33.201.221 (05/25 22:02)

05/25 22:02, , 5F
是大駝峰喔! 應該不是爪哇
05/25 22:02, 5F

05/25 22:03, , 6F
@_@ 我猜錯了
05/25 22:03, 6F

05/25 22:04, , 7F
JAVA 的 Base y 會讓 y 變物件的參考,但 C++ 不是
05/25 22:04, 7F

05/29 17:54, , 8F
你要的return value是一個指標指向的位址 所以functiontype
05/29 17:54, 8F

05/29 17:55, , 9F
應該是指標的樣子~ java好像都是把他想成reference
05/29 17:55, 9F
文章代碼(AID): #1DtGRtAJ (C_and_CPP)