假设我有一个名为ClothingStore的类。该课程有3个成员功能,指向访问商店正确部门的访问者。会员职能是儿童部门,男子部门和妇女部门,具体取决于访问者是小孩,男性还是女性。函数重载如何在运行时工作,以及为什么会重载?
函数重载可用于使3个函数具有相同的名称,比如PointToDept,但采用不同的输入参数(儿童,男人,女人)。
执行程序时在运行时实际发生了什么?
我的猜测是编译器将switch语句添加到程序中,以选择正确的成员函数。但是,这让我怀疑 - 在使用重载函数时,程序性能方面是否有任何好处,而不是使用switch语句创建自己的函数?同样,我唯一的结论就是代码可读性。谢谢。
编译器可以看到三个不同的功能就好像他们被不同的名称。 (编译器)通过查看参数类型和“模式匹配”以及参数类型在每个调用站点调用哪个函数。没有switch语句。该调用只是针对具有匹配参数的独特功能。如果编译器找不到匹配项(因为不符合C++重载解析规则),则会收到编译时错误消息。 – Gene
请参阅http:// en。wikipedia.org/wiki/Ad_hoc_polymorphism#Early_binding –
“为什么超载?” - 因为它允许您编写客户端代码,即使其提供的数据类型发生更改,也不需要将其调用更改为重载函数。这对于普通的客户端代码来说很方便 - 只是在开发或维护编程期间它会演变为使用另一种类型,但当客户端说可以从其调用者接受任何类型的模板时,这一点至关重要:如果模板可以调用重载函数使用相同的源代码,一种形式的多态(重载)干净地支持其他(模板)。 –