看板 OOAD 關於我們 聯絡資訊
※ 引述《wupojung (常駐程式)》之銘言: : 如題...那天朋友問我 我真的 不知道要怎麼跟他解釋.... : 只能跟他解釋 : int add(float,int) : int add(float,float) : int add(int,int) : 這樣就算XD.... 不知道 各位的看法? 看你後面的推文, 好像你未把東西搞清楚 就弄一堆 buzzword 把東西複雜化. 我大概以 C++/Java 的角度去說 method overloading 是什麼吧. 以前在 C 的年代, 要是我宣告了兩個同樣名字 的 function, 是不合法的. void foo(int); void foo(int, int); C++/Java 中則容許, 只要 method signature 不同 就可以 (大概而言啦, 因為單是 return type 不同 的情況不容許) void foo(int); void foo(int, int); 其實當中沒有什麼大不了的事, 簡單來說, 就是雖然 你宣告的是 void foo(int) 和 void foo(int, int), 實際上 compiler 不是認為它們叫 foo, 而是 void_foo_int() 和 void_foo_int_int() (概念上而言, 不是真的這樣叫) 所以根本就是兩個不同的 method, 和以前的情況沒有什麼 不同, 你可以想成只是 compiler比較聰明一點, 你不用打 void_foo_int(123) 或 void_foo_int_int(123,456) 那麼 麻煩, 他們幫你猜你想 invoke 的是哪一個 method overloading 就只是這麼一回事而已 什麼抽象化, vtable, 你把東西無意義的複雜化了.... alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82
sunneo :推你有力的說法 04/08 19:29
※ 編輯: adrianshum 來自: 202.155.236.82 (04/09 12:26)
wupojung :推專業...and 考完我才想通這個問題怎麼解釋= = 04/12 15:40
skyler :簡捷有力 06/14 21:05
mingtai1 :推 07/11 12:39