c++模板函数

本文介绍了C++模板函数的基础知识,包括模板的作用、如何编写通用加法函数、模板的优缺点,以及模板的声明、编译过程、形参推演、类型形参转换。此外,还探讨了模板参数、模板匹配问题以及模板函数特例化的概念。
摘要由CSDN通过智能技术生成

调试环境 win10+vs2015

模板是c++中泛型编程的基础,一个模板就是一创建类或函数的蓝图或者说公式。(c++ primer)

其实模板对于我们生活来说是十分常见的,在编程这里也不例外。
对于编程的初学者来说,多写一点代码,可以增加代码熟练度,但是对于工程来说,那就是浪费时间。
所以c++提供了模板这个机制。

如何编写一个通用的加法函数

  1. 使用函数重载,针对每个所需相同行为的不同类型重新实现它
    缺点:
    只要有新类型出现,就要重新添加对应函数
    出类型外,所有函数的函数体都相同,代码重复率不高
    如果函数只是返回值类型不同,函数重载不能解决
    一个方法有问题,所有方法都有问题,不好维护
  2. 使用公共基类,将通用代码放在公共的基础类里面
    缺点:
    借助公共基类来编写通用代码,将失去类型检查的优点
    对于以后实现的许多类,都必须继承自某个特定的基类,代码维护更加困难
  3. 使用特殊的预处理程序
    缺点
    不是函数,不进行参数类型检测,安全性不高
  4. 使用模板

声明模板
函数模板:代表了一个函数家族,该函数与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。

//模板函数以关键字typelate开始,后跟一个模板参数列表,里面是模板参数的列表,以逗号分隔,用<>括起
template<typename T>//typename也可以使用class来代替,但是最好用typename,一些较早的编译器可能不识别class
T fun(T t1,T t2){}//定义了一个模板函数,如果函数函数需要定义成内联函数,inline关键字必须房子啊模板形参表之后,返回值之前,不能放在template之前

注意:
一个模板函数之前必须有与之匹配的template,也就是说一个template关键字只能修饰一个模板函数
例如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值