一、模板概念
能够接受任意类型的参数,是一种与类型无关的一般形式。其过程是在编译主函数时生成新的代码,是模板类型产生新的类型,生成具体类型,而不是用int替换Type
分为函数模板与类模板,前者针对参数类型的不同,后者针对数据成员和成员函数类型的不同。作用是减少代码量。
二、模板定义
函数模板的一般形式:
template<typename Type>
返回类型 函数名(形参)
{
函数定义体
}
类模板的一般形式:
template<typename Type>
class 类名
{
类定义体
}
三、模板实例化
int main()//假设类名为Stack
{
Stack<int> ist;
Stack<double> dst;
Stack<Student> sst;
}
在编译过程中生成新的代码,以int为例
class Stack<int>
{
typedef int Type;//将Type命名为整形
……
}
不同类型的对象之间不能相互赋值。
慎用data=new Type[maxsize] ;这样类似的,造成逻辑和事实上的差异(已经构建了对象,但还没有入栈)