//第二十三模板 5函数模板的匹配 /*#include <iostream> using namespace std; struct people { char name[10]; int age; }; template <class T> void show(T t[], int n) { cout<<"执行函数模板void show(T t[], int n) "<<endl; for(int i=0; i<n; i++) cout<<t[i]<<' '; cout<<endl; } template <class T> void show(T * t[], int n) { cout<<"执行函数模板void show(T * t[], int n) "<<endl; for(int i=0; i<n; i++) cout<<*t[i]<<' '; cout<<endl; } int main() { int num[2]={13,31}; people list[3]={{"Jack",21},{"Mick",24},{"Tom",18}}; int *pd[3]; for(int i=0; i<3; i++) pd[i] = &list[i].age; show(num,2); show(pd,3); return 0; }*/ //通过该实例我们可以看出,编译器在执行函数时会选择最匹配的函数模板,假如只存在一个这样的函数模板,那么就选择它,假哪存在多个符合要求的函数,并且其中有非模板函数,即普通函数,那么选择普通函数,假哪这多个符合要求的函数都是模板,但是其中有一个具体化函数模板,那么选择具体函数模板,假如没有具体化函数模板,那么选择更加接近要求的重载函数,假如都不接近要求或者不存在匹配的函数,那么函数的调用将是不确定的