由于这些天都得疲于复习考试(平时没怎么听),然后又赶上课程设计,所以、、、哎、、、推脱一番后该进入主题了、呵呵
今天要谈的是函数重载,何为函数重载?它的作用是什么?内部机制又是怎样的呢?
函数重载即为函数名相同,但实现的功能不同而已。
那为什么要有函数重载呢?因为好看呗(不是搞笑),确实如此,因为它实现了一个借口,多种定义的功能。有效地避免了名字空间的污染。嗯?这不就是传说中的多态嘛,就比如说下面的这几行代码:
这就是函数重载,简单吧!!但是它是如何实现的呢?我们度知道函数名即为函数的入口地址,如果函数名相同的话,那函数入口地址不就相同么,那编译器如何识别和确定调用哪个函数呢?为了解决这个谜团,我们可以将该程序生成的可执行文件反编译,查看在编译后两个print函数的函数名后你会发现,这两个函数经过编译后函数名会发生改变,不再是print。
新生成的函数名的结构应该是:函数返回类型+函数名+参数列表。作用域应该不用考虑,因为不在同一作用域下的同名函数不叫函数重载。这样就明了了,这样也就不会产生函数命名的冲突,实现了函数的重载(当然中间的细节肯定还有很多)。
然而也容易看出,函数重载是发生再编译时段,就可以确定了对象调用的函数。所以它也就是静态型多态、、、、
____继续复习、、、