函数模板和模板函数
函数模板和模板函数 定义 1、不管它们的性质如何,所有的函数模板都具有同样的基本格式: template<参数说明> 函数头 函数体 例如,下面是一个2参数的模板的声明: template<class T> T max(T param1 ,T param2) { //此处为函数体 } 2、根据上面已定义的模板,编译器将可生成下面的模板函数(都是对的,函数模板的目的就是函数重载): char * max(char * a, char * b) //模板函数1 { return (a>b)?a:b; } int max(int a, int b) //模板函数2 { return (a>b)?a:b; } double max(double a, double b) //模板函数2 { return (a>b)?a:b; } 区别 1、函数模板提供了一类函数的抽象,它提供了任意类型为参数及返回值,函数模板经实例化后生成的具体函数成为模板函数。函数模板代表了一类函数,模板函数表示某以具体函数。 2、用模板实参实例化的函数称为模板函数。 3、当嵌套类模板在其封闭类的外部定义时,它们必须以类模板的模板参数和成员模板的参数开头。 补充 模板函数可以进行隐式的数据类型转换,中函数模板不会进行自动类型转换。 一、函数模版和同名普通函数在同一个作用域中,会优先调用哪个函数