C++之模板類派生子類

從模板類派生普通類

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()
{
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章