函数模板
模板就是建立通用的模具,大大提高复用性
模板的特点:模板不可以直接使用,它只是一个框架;模板的通用并不是万能的
———————————————函数模板:
C++另一种编程思想称为泛型编程,主要利用的技术就是模板
C++提供两种模板机制:函数模板和类模板
函数模板的作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表
函数模板注意事项:
1)自动类型推导,必须推导出一致的数据类型T才可以使用
2)模板必须要确定出T的数据类型,才可以使用
普通函数与函数模板的区别:
1)普通函数调用时可以发生自动类型转换(隐式类型转换)
2)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换;如果利用显式指定类型的方式,可以发生隐式类型转换
建议使用显示指定类型的方式,调用函数模板,因为可以自己确定通用类型T
普通函数与函数模板的调用规则:
1)如果函数模板和普通函数都可以实现,优先调用普通函数
2)可以通过空模板参数列表来强制调用函数模板
3)函数模板也可以发生重载
4)如果函数模板可以产生更好的匹配,优先调用函数模板
模板的局限性:模板的通用性并不是万能的
因此C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板