template<class T>是声明一个虚拟类型名为T的类模板
普通类定义对象的方法是Cmp cmp1(1,2);
相比较之下,类模板需要指出给对象定义的类型Cmp<int> cmp1(1,2);
因为Cmp是类模板名,而不是一个具体的类,类模板体中的类型T不是一个实际的类型,是一个虚拟的类型,无法用它去定义对象,必须用实际的类型名去代替虚拟的类型名。
在类模板外定义成员函数如上,需要注意
一般定义类外成员函数的形式是:T Cmp::max(){}
而类模板外定义成员函数需要:再写
template<class T>
T Cmp<T>::max(){}
如果没有在定义函数上写template<class T>会报错没有声明T
这几天重新翻看C++的书,发现要记的东西还有很多,之前学的大多都忘光了。大家要每天多学一点点,每天都要复习前面的内容才不会容易忘记哦。多敲代码多做笔记多做相似类型的比较。
纸上得来终觉浅,绝知此事要躬行。