1.父类为普通类,子类为模板类,和普通继承的玩法相似
class A {
public:
A(int a) {
this->a = a;
}
private:
int a;
};
template <typename T>
class B : public A {
public:
B(T b, int a) :A(a) {
this->b = b;
}
private:
T b;
};
2.父类为模板类,子类为普通类,继承时必须在子类中实例化父类的参数
template <typename T>
class A {
public:
A(T a) {
this->a = a;
}
private:
T a;
};
class B : public A<int> {
public:
B(int b, int a) :A(a) {
this->b = b;
}
private:
int b;
};
3.父类为模板类,子类为模板类,继承时必须在子类中实例化父类的参数,子类的虚拟类型可以传递到父类中
template <typename TA>
class A {
public:
A(TA a) {
this->a = a;
}
private:
TA a;
};
template <typename TB>
class B : public A<int> {
public:
B(TB b, int a) :A(a) {
this->b = b;
}
private:
TB b;
};
如果类为模板类,则在创建类对象时必须指明参数类型