我建议你阅读C++ Primer.深入解释了这个概念.
在更高级别,如果两个函数都允许函数重载
在较低级别(编译器如何计算出来),这是如何完成的.
功能重载分辨率有3个步骤.
e.g void f();
void f(int);
void f(double, double = 3.4);
void f(char *, char *);
Function call inside main -> void f(5.6);
Run Code Online (Sandbox Code Playgroud)
标识为调用考虑的重载函数集,它们被称为候选函数.候选函数是一个与被调用函数同名的函数,其声明在调用时可见.它还标识函数调用中参数列表的属性,即没有参数及其类型.
选中:名称为'f'的所有4个函数
从步骤1中找到的候选函数集中选择可以使用调用中指定的参数调用的函数.这些被称为可行的功能.可行函数是具有与实际函数调用中的参数相同的nof参数或更多参数(addn参数具有关联的默认参数)的函数.参数类型必须是可转换的,才能将函数分类为可行.
选中:void f(int)和void(double,double = 3.4)
确定所有可行功能中最佳的可行功能.对于(int)转换需要应用哪个是标准转换(double to int).但是对于(double,double = 3.4),存在完全匹配,因此不需要转换.没有转化比转化更好.
选中:void(double,double = 3.4)
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |