当类模板碰到继承时,需要主义以下几点:
- 当子类继承的父类是一个类模板是,子类在声明的时候,要制定出父类中T的类型
- 如果不指定T的类型,编译器无法给子类分配内存
- 如果想灵活制定出父类中T的类型,子类也需要称为模板
这种清空无法继承,因为编译器不知道父类的数据类型,无法进行下去。template <class T>
class Base {
T m;
};
class Son :public Base {
};
如果子类也是个类模板,那么将会更灵活template <class T>
class Base {
T m;
};
class Son :public Base <int>{ //增加int后识别出T是int类型,但这样会限制父类的数据类型,只能为T
};
template <class T>
class Base {
T m;
};
class Son1 :public Base <int>{
};
template <class T1,class T2> //S2列表说明T1是int类型,T2是char类型,父类的T也是T2也是char
class Son2 :public Base <T2> {
T1 obj;
};
void example() {
Son2<int, char>S2;
}