阿里云网站服务器,中国企业100强排名,机器设备行业网站模板,网站描述优化目录
函数模板
思考
如果两个参数的类型不一样可以下面这么写
如果有指定返回参数可以下面这么写
实战 找出三个数中最大的一个 函数模板
实际上就是建立一个通用函数#xff0c;其函数返回值类型和形参类型不具体指定#xff0c;用一个虚拟的类型来代表template 是一个…目录
函数模板
思考
如果两个参数的类型不一样可以下面这么写
如果有指定返回参数可以下面这么写
实战 找出三个数中最大的一个 函数模板
实际上就是建立一个通用函数其函数返回值类型和形参类型不具体指定用一个虚拟的类型来代表template 是一个关键字 表示下面定义的是一个模板typename 也是一个关键字后面跟的T是一个虚拟的数据类型可以用class来代替 其函数返回值数据类型 和 形参的数据类型 不具体指定用一个虚拟的类型在代表
思考
void _swap(int a,int b)
{a ab;ba-b;aa-b;
}
void _swap(double a,double b)
{a ab;ba-b;aa-b;
}
void _swap(char a,char b)
{a ab;ba-b;aa-b;
}
不断重写swap函数太过麻烦
我们可以建立一个通用板的函数
templatetypename T
void _swap(T a,T b)
{couttemplateendl;a ab;ba-b;aa-b;
}int a 10,b20;
当_swap(a,b);调用后
会自动生成void _swap(int a,int b)
如果两个参数的类型不一样可以下面这么写
templatetypename T,typename Tx
void _swap(T a,Tx b)
{couttemplateendl;a ab;ba-b;aa-b;
}
如果有指定返回参数可以下面这么写
templatetypename Tint
T _max(T a,T b)
{T c;return ab?a:b;
}int a 10,b20;
_maxint(a,b);----int _max(int a,int b)
实战 找出三个数中最大的一个
templatetypename T
T _max(T a,T b,T c)
{return ab ? (ac?a:c) : (bc?b:c);
}coutmaxint(10,20,30)endl;
如果在类中实现
class Max
{
public:Max();templatetypename TT max(T a,T b,T c);
};如果有max.cpp max.h那下面模板函数定义一定要放到.h里上面的也可以放到.h里
templatetypename T
T Max::max(T a,T b,T c)
{return ab ? (ac?a:c) : (bc?b:c);
}调用方法如下Max mya;coutmya.maxint(10,20,30)endl;