作者adrianshum (Alien)
看板OOAD
标题Re: [其他] 到底怎样才算overloading?
时间Wed Apr 8 11:11:54 2009
※ 引述《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
1F:推 sunneo :推你有力的说法 04/08 19:29
※ 编辑: adrianshum 来自: 202.155.236.82 (04/09 12:26)
2F:→ wupojung :推专业...and 考完我才想通这个问题怎麽解释= = 04/12 15:40
3F:推 skyler :简捷有力 06/14 21:05
4F:推 mingtai1 :推 07/11 12:39