template<typename T>
class Parent
{
public:
Parent(T a);
~Parent();
private:
T a;
};
template<typename T> //模板的作用范围是紧随其后的一个类或者函数
Parent<T>::Parent(T a) //Parent<T>这里的<T>不能少,表明它是一个模板类。
{
this->a = a;
}
template<typename T>
Parent<T>::~Parent()
{
}
//从模板类派生一个普通类
//派生普通类,编译器需要知道类的大小,才能正确编译。所以要指定数据类型。
class Son : public Parent<int> //指定模板类的具体数据类型
{
public:
Son(int a);
~Son();
private:
};
Son::Son(int a):Parent<int>(a) //调用模板类的构造函数
{
}
Son::~Son()
{
}
template<typename T>
class CAbstract : public Parent<T> //从模板类派生模板类
{
public:
CAbstract(T a, T b);
~CAbstract();
private:
T b;
};
template<typename T>
CAbstract<T>::CAbstract(T a, T b) :Parent<T>(a) //调用父类构造函数
{
this->b = b;
}
template<typename T>
CAbstract<T>::~CAbstract()
{
}