模板(模板)指c++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计C + +的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO流。
在c++入门中,很多人会接触<代码>交换(int& int&) 代码>这样的函数类似代码如下:
无效的交换(int& int&;b) { int temp=一个; a=b; b=temp; }
但是如果是要支持长字符串,自定义类的交换函数,代码和上述代码差不多,只是类型不同,这个时候就是我们定义互换的函数模板,就可以复用不同类型的交换函数代码,函数模板的声明形式如下:
模板& lt;类identifier>function_declaration; 模板& lt; typename identifier>function_declaration;
交换函数模板的声明和定义代码如下:
//method.h template无效的交换(T&t1, T&t2); # include“method.cpp”//method.cpp template 无效的交换(T&t1, T&t2) { T人体; 人体=t1; t1=t2; t2=人体; }
,上述是模板的声明和定义了,那模板如何实例化呢,模板的实例化是编译器做的事情,与程序员无关,那么上述模板如何使用呢,代码如下:
//main.cpp # include & lt; stdio.h> # include“method.h” int main () {//模板方法 int num1=1, num2=2; swap(num1, num2); printf (" num1: % d num2: % d \ n”, num1, num2); 返回0; }
这里使用交换函数,必须包含交换的定义,否则编译会出错,这个和一般的函数使用不一样,所以必须在方法。h文件的最后一行加入<代码> # include“method.cpp 代码> "
。
考虑我们写一个简单的栈的类,这个栈可以支持int类型,长类型,字符串类型等等,不利用类模板,我们就要写三个以上的堆栈类,其中代码基本一样,通过类模板,我们可以定义一个简单的栈模板,再根据需要实例化为int栈,栈,栈字符串。
//statck.h 模板& lt;类T>栈类{ 公众: 堆栈(); ~堆栈(); 空推T (T); T pop (); bool isEmpty (); 私人: T * m_pT; int m_maxSize; int m_size; }; # include“stack.cpp”//stack.cpp 模板& lt;类T>StackStack 空白Stack T Stack bool Stack 上述定义了一个类模板——栈,这个栈很简单,只是为了说明类模板如何使用而已,最多只能支持100个元素入栈,使用示例如下:
//main.cpp # include & lt; stdio.h> # include“stack.h” int main () { StackintStack; intStack.push (1); intStack.push (2); intStack.push (3); 而(! intStack.isEmpty ()) { printf (" num: % d \ n ", intStack.pop ()); } 返回0; }
模板可以有类型参数,也可以有常规的类型参数int,也可以有默认模板参数,例如
template<类T, T def_val>栈类{…}
引用>上述类模板的栈有一个限制,就是最多只能支持100个元素,我们可以使用模板参数配置这个栈的最大元素数,如果不配置,就设置默认最大值为100代码如下:
//statck.h 模板& lt;类T, int最大尺寸=100比;栈类{ 公众: 堆栈(); ~堆栈(); 空推T (T); T pop (); bool isEmpty (); 私人: T * m_pT; int m_maxSize; int m_size; }; # include“stack.cpp”//stack.cpp 模板& lt;类T, int maxsize>Stack::堆栈(){ m_maxSize=最大容量; m_size=0; m_pT=new T [m_maxSize]; } 模板& lt;类T, int maxsize>Stack :: ~堆栈(){ 删除[]m_pT; } 模板& lt;类T, int maxsize>空白Stack ::推动(T T) { m_size + +; m_pT [m_size - 1]=t; } 模板& lt;类T, int maxsize>T Stack :: pop () { T T=m_pT (m_size - 1); m_size——; 返回t; } 模板& lt;类T, int maxsize>bool Stack 用c++模板模板法小结(推荐)