04模板学习之普通类继承类模板和类模板继承类模板的区别
1 普通类继承类模板
普通类继承模板时,继承的模板类必须确定类型,否则无法通过编译。因为普通类编译时需要确定基类的类型,而基类却无法确定,所以必定报错。
template<class T>
class Base {
public:
Base(){}
};
//普通类继承类模板,int必须写,否则报错
class Son :public Base<int> {
public:
Son(){}
};
2 类模板继承类模板
类模板继承类模板不像普通类继承类模板那样,不需要写确定的类型,因为类模板继承后仍是类模板,所以只需要写上T类型的即可,以便在被调用时通过子类模板确定基类模板。
template<class T>
class Animal {
public:
void Jiao() {
cout << mAge << "岁动物在叫!" << endl;
}
public:
T mAge;
};
//类模板继承类模板不需要写确定的类型,只需要写模板的类型即可
template<class T>
class Cat : public Animal<T> {};