开网站程序,网站 502错误,备案 网站错了,个人中心页面设计html函数模板属于类属#xff0c;能够处理不同的数据类型#xff0c;当编译器遇到函数调用是#xff0c;将根据实际参数的类型产生特定的代码#xff0c;函数模板的定义形式是#xff1a;
template 类型参数表
返回值类型 函数名#xff08;形式参数表#xff09;{…函数模板属于类属能够处理不同的数据类型当编译器遇到函数调用是将根据实际参数的类型产生特定的代码函数模板的定义形式是
template 类型参数表
返回值类型 函数名形式参数表{
//函数体
}
函数模板可以为我们提供很多方便
函数重载的例子
int square(int number){return number*number;
}float square(float number){return number*number;
}
上述两个函数之间的区别是参数类型和返回值类型不一样这种情况下我们使用函数模板更加方便。 通过函数模板实现square函数
template class T
T square(T number){return number*number;
}
只要写一个函数定义就可以处理不同的数据类型而不需要对每种数据类型都写一个单独的函数。 eg1
#includeiostream
using namespace std;template class T
T square(T number){return number*number;
} int main(){int userInt;float userFloat;cout.precision(5);cout请输入一个整数和一个浮点数;cinuserIntuserFloat;cout他们的平方分别是;coutsquare(userInt)和square(userFloat)endl;return 0;
}
注①函数模板本身不占用内存当编译器遇到函数调用是将在内存中创建一个函数实例。②模板的定义必须放在函数调用之前通常放在程序的开头或者位于头文件中。
具有多个参数的函数模板
template class T
void swapData(T var1,T var2){T temp;tempvar1;var1var2;var2temp;
}
函数模板不是一个真正意义上的函数它仅仅是一个函数模型当编译器遇到函数调用是将依据模板给出的代码通过检验参数的数据类型产生重载函数。
具有多种类型的函数模板
template class T1,class T2
void swapData(T1 var1,T2 var2){T1 temp;tempvar1;var1var2;var2temp;
}
函数模板也支持重载
template class T
T sum(T var1,T var2){return var1var2;
}template class T
T sum(T var1,T var2,T var3){return var1var2var3;
}
当程序中有一个普通的函数非模板同时定义了一个模板只要他们的参数列表不同他们也能作为重载函数的形式共存。
float sum(float var1,float var2){return var1var2;
}template class T
T sum(T var1,T var2,T var3){return var1var2var3;
}
这也属于模板重载当程序执行是将根据实际调用的参数进行区分。