c++模板

c++模板

程序设计中经常会用到一些程序实体:它们的实现和所完成的功能基本相同,不同的仅 仅是所涉及的数据类型不同。而模板正是一种专门处理不同数据类型的机制
值和类型是数据的两个主要特征,它们在C++中都可以被参数化。
数据的值可以通过函数参数传递,在函数定义时数据的值是未知的,只有等到函数调用 时接收了实参才能确定其值。——这就是值的参数化。
数据的类型也可以通过参数来传递,在函数定义时可以不指明具体的数据类型,当函数调用时,编译器根据传入的实参自动推断数据类型。——这就是类型的参数化

函数模板

函数模板— 定义通用函数,不指明其数据类型,用虚拟类型替代。
定义格式:

template <typename 形参名, typename 形参名...>     //模板头(模板说明)

返回值类型  函数名(参数列表)                   //函数定义

{
        函数体;

}
template <typename T1, typename T2>
T1 add(T1 t1, T2 t2)
{
	return t1 + t2;
}

template是声明模板的关键字,告诉编译器开始泛型编程
尖括号<>中的typename是定义形参的关键字,用来说明其后的形参名为类型 参数,(模板形参)。Typename(建议用)可以用class关键字代替,两者没有区别

函数模板的实例化

函数模板实例化的方法有两种:

隐式实例化:根据具体的函数调用形式,推演出模板参数类型。
显式实例化:通过显式声明形式指定模板参数类型

隐式实例化

显式实例化

函数模板的重载

类模板

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值