如果父类是类模板,子类需要指定出父类中的T的数据类型
class person
{
public:
T1 m_name;
T2 m_age;
};
//创建一个西游类继承people
//class westTravel :public person//错误
//必须要知道父类中的参数类型,才能继承给子类
//但是下面这个方法不够灵活
class westTravel:public person<string,int>
{
public:
};
//如果想灵活指定父类中的T类型,子类也需要变成类模板
template<class T1, class T2>
class WestTravel :public person<T1, T2>
{
public:
};
void test01()
{
westTravel p1;
WestTravel<string, int>p2;
p1.m_name = "悟空";
p1.m_age = 19;
}
类模板中成员函数类外实现时,要加上模板参数列表
class person
{
public:
person(T1 name, T2 age);
void showPerson();
T1 m_name;
T2 m_age;
};
//类模板构造函数的类外实现
template<class T1,class T2>
person<T1, T2>::person(T1 name, T2 age)
{
m_name = name;
m_age = age;
}
//类模板成员函数的类外实现:
template<class T1, class T2>
void person<T1, T2>::showPerson()
{
cout << "姓名:" << m_name << "年龄:" << m_age << endl;
}