类模板继承需要注意:
- 当子类继承父类是一个类模板时,子类在声明的时候,要指定出父类的中 T 的类型;
template<class T>
class Base {
public:
T m;
};
class Son : public Base<int> { // 必须要知道父类中的 T 的具体类型,才能被子类继承
};
void test() {
Son s;
}
int main() {
test();
return 0;
}
- 如果不指定,编译器无法给子类分配内存;
- 如果想灵活指定出父类中 T 的类型,子类也需要变为类模板。
template<class T>
class Base {
public:
T m;
};
template<class S, class T>
class Son : public Base<T> {
T ob;
};
void test() {
Son<int, char> s;
}
int main() {
test();
return 0;
}