函数模板

函数模板:C++中的泛型,解决程序通用性
1、函数模板:template函数模板标识关键字,<>模板类型参数列表,typename定义模板类型参数
template//T 模板类型 万能类型 虚假类型
T Sum(T a,T b)//Sum 模板名
{
return a+b;
}
2、模板实例化:在模板调用点传一个具体的类型重定义typedef模板类型;
Sum(10,20);//实参调用的是模板函数
int Sum(int a,int b)
{
return a+b;
}
3、模板函数:函数,模板实例化后生成的函数
int Sum(int a,int b)//模板函数
{
return a+b;
}
4、函数模板的实参推演:针对模板调用点没有给出具体的类型来实例化,系统/编译器根据实参进行推演用来实例化的类型
  1.必须有实参
  2.同一模板实参推演出两个不同的类型,编译器会报错;
  例:Sum(10,20.1);->实参int 和 double类型,而模板参数类型为相同的类型T,->推演出两个不同的类型int和double,报错;
5、函数模板的特例化:给出的函数模板无法满足某一类型的处理,针对这个类型写一个模板函数;
6、函数模板的类型参数和非类型参数:typename或class定义模板类型参数,一般用typename;
非类型参数:常量不能修改,不能是浮点型;
template <typename T,int a>//a 常量  不能修改  a不能定义成浮点型;
7、函数模板的编译过程:模板在编译阶段,编译:定义点:模板头,调用点:模板体;
8、函数模板的默认值:针对类型(模板类型参数),C++11标准,随机赋予默认值;
      没有明确指定类型,不能进行实参推演;
9、函数模板的重载:精确匹配
        1、普通函数版本
  2、函数模板版本
  3、函数模板特例化
  调用优先级:普通函数>函数模板特例化>函数模板版本
10、接收不明确类型的返回值:auto自动类型;
11、函数模板的显式实例化:告诉编译器明确生成一个模板函数
template int Sum(int ,int );
一般将函数模板写在头文件里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值