函数重载:功能相似的几个不同函数,可以组合构建为一个重载函数。比如判断n个数的最大值,求n个数的和。
函数重载注意事项:
1.原则:可以形参不同,也可以返回值不同。但是形参一定不能相同(形参的顺序、类型、个数,否则编译器无法识别采用哪种函数。
2.重载函数的每个函数都需要声明和定义。
//代码举例1:
//求3个整数或2个整数的最大值,下面代码中形参的个数不同,编译器会通过编译。
int max(int a,int b,int c);
int max(int a,int b);
//代码举例2:
//求2个数的和,下面代码中虽然函数返回值不同,但是形参完全一模一样,编译器无法识别采用哪种,不通过。
int sum(int a,int b);
float sum(int a,int b);
函数重载的缺点:需要每个函数都要编写,重复效率低。
函数模板:函数类型和形参类型不具体指定,而用一个虚拟的类型来代表。需要在声明为:
template < typename T >
当参数类型不止一个时,可写为
template < typename T1, typename T2 >
//求2个数的最大值
template <typename T>
T max(T a,T b)
{
if(a > b)
return a;
else
return b;
}
函数模板的缺点:函数体完全相同,且形参个数和顺序完全相同,否则编译器无法通过。