要模板目的:
类型参数化
函数模板写法:
template <class 形参名,class 形参名,......> 返回类型 函数名(参数列表) { }
这里的返回类型,参数列表的形参类型 可以写成你在尖括号<>里规定的形参类名,如T,如下:
template <class T,class M> T min(T a,M b)
{ Return a<b?a:b; } //其实不严谨
类模板写法:
template<class 形参名,class 形参名,…> class 类名
{ //类的方法和属性 };
如果你要定义模板成员方法,
1.因为它是一个成员方法:写外边,加类名和作用域符::
2.因为它是一个模板方法:配合template关键字和<>声明类的形参
类模板的继承问题:
template <typename T>
class Parent{
public:
Parent(T p)
{
this->p = p;
}
private:
T p;
};
//如果子类不是模板类,需要指明父类的具体类型
class ChildOne:public Parent<int>{
public:
ChildOne(int a,int b):Parent(b)
{
this->cone = a;
}
private:
int cone;
};
//如果子类是模板类,可以用子类的泛型来表示父类
template <typename T>
class ChildTwo:public Parent<T>{
public:
ChildTwo(T a, T b):Parent<T>(b)
{
this->ctwo = a;
}
private:
T ctwo;
};