模板类派生普通类
模板类派生普通类时,必须要声明类型!
模板类派生时,需要具体化模板类,因为C++编译器需要知道,父类的数据类型具体时什么样子的,才可以分配内存。
即 要知道父类所占内存大小是多少,只有数据类型固定下来,才知道如何分配内存。
示例:
template<class T>
class Person
{
public:
Person()
{
m_age = 0;
}
private:
T m_age;
};
class sonPerson : public Person<int> //这里不加<int>,会生成失败
{
};
类模板派生模板类
模板类派生模板类时,可以不声明类型!
这样写就是正确的!为什么呢?
template<class T>
class Person
{
public:
Person()
{
m_age = 0;
}
private:
T m_age;
};
template<class T>
class SonPerson2:public Person<T>
{
public:
SonPerson2() {};
~SonPerson2() {};
private:
};
原因是在调用这个被派生的模板类时,我们需要先声明类型,所以此时编译器知道如何申请内存!
SonPerson2<int>();