当类模板碰到继承时,需要主义以下几点:
- 当子类继承的父类是一个类模板是,子类在声明的时候,要制定出父类中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也是charclass Son2 :public Base <T2> {T1 obj;};void example() {Son2<int, char>S2;}
