Re: [其他] 到底怎樣才算overloading?

作者: adrianshum (Alien)   2009-04-08 11:11:54
※ 引述《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

Links booklink

Contact Us: admin [ a t ] ucptt.com