发信人: compiler()
整理人: skyice(2000-04-04 13:44:08), 站内信件
|
【 在 zelor (张作乐) 的大作中提到: 】
: 上回说起OVERLOAD和OVERRIDE的区别来,绕着绕着俺自己都
: 糊涂了,遂回去
: 查了一查,在这里瞎掰一二,为抛砖引玉之用,贻笑
: 大方之处望各位不吝赐教.
: .......
上回说起OVERLOAD和OVERRIDE的区别来,绕着绕着俺自己都
糊涂了,遂回去
查了一查,在这里瞎掰一二,为抛砖引玉之用,贻笑
大方之处望各位不吝赐教.
OVERLOAD就是用同样的名称去干不同的活,台湾同胞叫多重
载入咱大陆叫重载,省事。OVERLOAD可以是不同变量类型的函数或者是运算符。
而且,OVERLOAD可以出现在同一个类中,或者说很多
情况下都是指在同一个类中同名而不同形式的函数或
运算符(函数)。
而OVERRIDE则是子类对父类中的虚拟函数的继承
或重载,必须与父类中要OVERRIDE的函数形式相同。
事实上,OVERRIDE是C++实现多态性的方法。奇怪的是
或许是俺孤陋寡闻吧,台湾称OVERRIDE为“凌越”,
还是比较切题的,但好象大陆对OVERRIDE的翻译似乎比
较模糊……
至于二者的关系,我个人认为,OVERRIDE是特殊的
OVERLOAD,不知各位是否这样认为呢?
~~~~~~~~~没有必要将两者相比,根本是不同的实现方式,
OVERLOAD是在COMPILE时用编译器实现的,
OVERRIDE时RUNTIME使用VTABL实现的。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.106.94.139]
|
|