Re: [問題] 虛擬函數練習

看板C_and_CPP作者 (好人超)時間15年前 (2010/05/08 12:55), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串2/2 (看更多)
void demo1(A t){t.print_msg();} 不管傳入這個函式的那個物件,它的 type 是 A, B, C 由於這個函式使用 call by value 一定會造成一個 copy 的動作,而製造出一個 A 接下來的 print_msg 也必然會呼叫 A 的函式 void demo2(A &t){t.print_msg();} 這個函式接收的是 reference,它不會有 copy 的動作 你傳 B 就收到 B, 你傳 C 就收到 C 因此 print_msg 也會根據你所傳的是哪個型別,而做選擇 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46

05/08 13:03, , 1F
我傳B 但是然後編譯器做隱含轉換成A 不是這樣嗎?
05/08 13:03, 1F

05/08 13:04, , 2F
所以t應該被解讀成A //我是這麼想的
05/08 13:04, 2F

05/08 13:04, , 3F
你講的是 by val 還是 by ref 的?
05/08 13:04, 3F

05/08 13:05, , 4F
by ref
05/08 13:05, 4F

05/08 13:09, , 5F
可以去查查C++如何實作多型…virtual function table
05/08 13:09, 5F

05/08 14:32, , 6F
多型 != 隱式轉換
05/08 14:32, 6F
文章代碼(AID): #1BvExOoo (C_and_CPP)
文章代碼(AID): #1BvExOoo (C_and_CPP)