模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。
函数模板的一般形式如下:
Template <class或者也可以用typename T>
返回类型函数名(形参表)
{//函数定义体 }
说明: template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个,每个形参前都要加class<类型形参表>可以包含基本数据类型可以包含类类型.
类模板:
Template < class或者也可以用typename T >
class类名{
//类定义......
};
说明:其中,template是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个。
#include<iostream> #include<string> using namespace std; #define STACKMAX 5 template <class T> class Stack{ public: Stack() { sp = 0; } void push(T value) { if (sp != STACKMAX) { stack[sp++] = value; } else cout << "栈溢出,哈哈哈" << endl; } T pop() { if (sp != 0) { return stack[--sp]; } else { cout << "栈空了,哈哈哈" << endl; return -1; } } ~Stack() { } private: T stack[STACKMAX]; T sp ; }; int main() { Stack<int> stack;//注意用模板定义类对象的时候要使用尖括号指明类型 cout << "开始入栈" << endl; for (int i = 0; i < 6; i++) { stack.push(i);//入栈 } cout << "开始出栈" << endl; for (int i = 0; i < 6; i++) { cout << stack.pop() << endl;//出栈 } system("pause"); return 0; }
这个是网上有人用模板类写的,格式很不错。还有就是不要把函数模板分成原型和实现两个部分。如果编译器看不到模板的完整代码,它就无法正确地生成代码。
关于C++Template的理解:
C++Template包含函数模板和类模板两种,顾名思义这两种的不同点在于所使用的场合不同,函数模板针对于函数使用,而类模板则针对于类使用可以提高程序的重用性,减少代码的冗余及代码量。
