Templat 模板(整理)

本文详细介绍了C++中的模板概念,包括函数模板的声明、生成、异常处理,以及类模板的定义、特化和偏特化。讨论了模板在不同情况下的匹配规则,并通过实例展示了模板特化在实际编程中的应用。特别强调了模板特化时不支持重载,只有基模板可以进行重载。
摘要由CSDN通过智能技术生成

temlate模板

函数模板的声明

>创建一个通用的函数, 支持多种不同的形参, 避免重载函数的函数体重复设计, 把函数使用的数据类型作为参数;

template<typename 数据类型参数标识符> <返回类型><函数名>(参数表) {    函数体   }

>template是定义模板函数的关键字; typename(或class)是声明数据类型参数标识符的关键字; 用以说明它后面的标识符是数据类型标识符;

>函数模板声明了一个函数的描述, 不是一个可以直接执行的函数, 只有根据实际情况用实参的数据类型代替类型参数标识符后才能产生真正的函数;

>关键字typename可以用class代替, 数据类型标识符可以使用所有C++数据类型;

函数模板的生成

>函数模板的类型参数标识符是一个类型形参, 在使用时要将形参实例化为确定的数据类型, 实例化的的参数称为模板实参, 函数称为模板函数;

1) 函数模板允许使用多个类型参数, 但在定义部分每个形参前必须有关键字typename或class;

template<class 数据类型参数标识符1,…,class 数据类型参数标识符n> <返回类型><函数名>(参数表) {     函数体   }

2)在template语句与函数模板定义语句<返回类型>之间不允许有别的语句;

3)模板函数类似于重载函数, 区别: 函数重载时, 每个函数体内可以执行不同的动作; 但同一个函数模板实例化后的模板函数都必须执行相同的动作;

函数模板异常处理

>函数模板中的模板形参可实例化成各种类型, 但当实例化模板形参的各模板实参之间不完全一致时, 会出现错误;

template <typename T>
void min(T &x, T &y)
{  return(x<y)?x:y;  }
void func(int i, char j)
{
    min(i, i);
    min(j, j);
    min(i, j);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值