模板
- 模板是一种参数化的多态工具,使一段程序代码可以用于处理多不同类型的对象
2.采用模板编程,可以为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制。
3. 继承和组合提供了重用对象代码的方法,而模板提供了重用源代码的方法。
函数模板:对不同类型的数据执行相似的操作
C++提供的函数模板可以定义一个对任何类型变量进行操作的函数
函数模板为所有的函数提供唯一的一段函数代码,增强了函数设计的通用性
使用函数模板的方法是先说明函数模板,然后实例化成相应的模板函数进行调用执行
函数模板不是函数,不能被执行
置换代码中的类型参数得到模板函数——实例化
实例化后的模板函数是真正的函数,可以被执行
函数模板的定义
函数模板的定义
函数模板的一般说明形式如下:
template < 模板形参表>
返回值类型 函数名(模板函数形参表){
//函数定义体
}
函数模板的参数是类型参数,其类型为class或typename
template<class T>
template<class T1, class T2>
函数模板的定义
- 模板的参数定义之后是函数模板的定义,是一个将类型参数作为某种类型使用的函数
- 函数模板的参数名在模板中作为一种类型使用,可以用于函数的形参、函数返回值和函数的局部变量
- 模板的每个形式参数要在函数的参数列表中至少出现一次
- 形式参数名的作用域局限于函数模板的范围内
类模板的定义:
template <类型形参表>
class <类名>
{ //类说明体 };
template <类型形参表>
<返回类型> <类名> <类型名表>::<成员函数1>(形参表)
{ //成员函数定义体 }
template <类型形参表>
<返回类型> <类名> <类型名表>::<成员函数2>(形参表)
{ //成员函数定义体 }
…
template <类型形参表>
<返回类型> <类名> <类型名表>::<成员函数n>(形参表)
{ //成员函数定义体 }
使用类模板
类模板的实例化:用具体的数据类型替换模板的参数以得到具体的类(模板类)
模板类也可以实例化为对象
用下列方式创建类模板的实例:
类名 <类型实参表> 对象名称;