#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
#include<typeinfo>
/*
1.3.5类模板与继承
当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型
如果不指定,编译器无法给子类分配内存
如果想灵活指定出父类中T的类型,子类也需变为类模板
*/
template<class T>
class Base{
public:
T m;
};
/*
class Son : public Base{ // 直接这么写是错误的
};
*/
class Son:public Base<int>{ // ok
};
template<class T1, class T2>
class Son2:public Base<T1>{
public:
T2 n;
Son2(){
cout << "T1:" << typeid(T1).name() << endl;
cout << "T2:" << typeid(T2).name() << endl;
}
};
void test(){
Son s1;
Son2<int, char> s2;
}
int main(){
test();
system("pause");
return 0;
}
