c++模板

模板的意义

可以对类型进行参数化

函数模板

怎样定义模板参数列表

template<typename T>
template<class T>

在模板定义中,模板的参数不能为空,因为后面还有模板的特例化,在特例化中模板的参数为空。

模板的类型参数

一般来说,我们可以将类型参数看作类型说明符,就像内置类型或类类型说明符一样使用。特别是,类型参数可以用来指定返回类型或函数的参数类型,以及在函数体内用于变量声明或类型转换,

模板的非类型参数

除了定义类型参数,还可以在模板定义中定义非类型参数。一个非类型参数表示一个值而非一个类型。我们通过一个特定的类型名而非关键字class 或 typename来指定非类型参数。
当一个模板被实例化时,非类型参数被一个用户提供的或编译器推断出的值所代替。这些值必须是常量表达式,从而允许编译器在编译时实例化模板

模板的实例化

//定义一个模板函数
template<typename T>
T add(T a,T b)
{
   
	return a + b;
}

int main()
{
   
	//参数列表为整型,模板会自动推导出T 类型
	//这里只有一个模板参数,如果传入的两个值得类型相同,则T类型为传入值的类型
	//如果传入的两个值的类型不相同,则编译出错,例如 int a = add(1, 2.232);
	int a = add(1,2);
}

模板函数与函数模板

函数模板是前面我们定义的那部分代码,模板的代码是不编译的,只有将模板实例化为模板函数的时候,才对模板函数进行编译。所以,模板的定义与函数模板的调用不能再不同的文件中,因为如果不在同一个文件中,模板不编译,在进行模板的实例化的过程中,找不到模板的定义就会报错。
经过实例化后的的函数叫做模板函数。模板本身不编译,实例化以后才编译

模板的实参推演

在前面的实例化中我们也可以看出&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值