在重载及函数模板重载里,编译器选择函数,要经过以下三步,这个过程称为重载解析。第一步:创建候选函数列表,其中包含有与被调函数名称相同的函数与模板函数。第二步:使用候选函数列表创建可行函数列表。这些都是参数数目正确的函数。第三步:确定是否有最佳可行的函数。如果有,则使用。确定最佳函数,只考虑其特征标,而不考虑返回类型(也无从考虑,但是要是硬想办法的话,也有,不过没有必要为了不必要的性能而浪费资源)。确定最佳函数,匹配特征标要依次经过以下判断:(1)完全匹配(常规函数优于模板;允许无关紧要的转换)(2)提升匹配(如char和short自动转换为int)(3)标准转换(int转换为char,long转换为double)(4)用户自定义的转换(如类声明中定义的转换函数)。完全允许无关紧要的转换,这些转换包括引用,指针与实体之间,数组与指针之间,函数与函数指针之间,const与非const等等。其次还要注意匹配的优先级。