当类模板碰到继承时,需要注意一下几点:
1.当子类继承的父类是一个类模板时,子类在声明的时候要指定出父类中的类型;
2.如果不指定,编译器无法给子类分配内存;
3.如果要灵活指定父类中的T的类型,子类也需要变成模板类;
#include<iostream> using namespace std; template<class T> class Base { public: T m; }; class Son1 :public Base<int> { }; template<class T1,class T2> class Son2 :public Base<T1> { public: Son2() { cout << "T1的数据类型为:" << typeid(T1).name() << endl; cout << "T2的数据类型为:" << typeid(T2).name() << endl; } T2 obj; }; void test() { Son1 s1; Son2<int,char> s2; } int main() { test(); system("pause"); return 0; }
输出: