從模板類派生普通類
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()
{
}