function overload resolution (注意这里的function不是类的成员)
hidden: 两个scope,外面的叫"外scope",内面的叫"内scope",则对内scope内的函数调用来说,内scope内定义的函数会hidden外scope内定义的函数(既使参数不同也会hidden)。
overload:同一个scope内,有相同名字不同规格(主要是参数不同)的函数就是overload函数
对于一个函数调用,编译器寻找合适的函数定义的过程分三步:
1. 寻找“候选”(candidate)的函数集合
2. 在"候选集合"中寻找“可用”(viable)的函数集合
3. 在"可用集合"中寻找"最佳"(best)函数
这三步是依次执行的, 如果1,2找到的集合为空,则失败;如果3步找到多个,则失败。注意,不会因为后面的一步失败而回过来再执行前面的步骤。
hidden: 两个scope,外面的叫"外scope",内面的叫"内scope",则对内scope内的函数调用来说,内scope内定义的函数会hidden外scope内定义的函数(既使参数不同也会hidden)。
overload:同一个scope内,有相同名字不同规格(主要是参数不同)的函数就是overload函数
对于一个函数调用,编译器寻找合适的函数定义的过程分三步:
1. 寻找“候选”(candidate)的函数集合
2. 在"候选集合"中寻找“可用”(viable)的函数集合
3. 在"可用集合"中寻找"最佳"(best)函数
这三步是依次执行的, 如果1,2找到的集合为空,则失败;如果3步找到多个,则失败。注意,不会因为后面的一步失败而回过来再执行前面的步骤。