类模板的定义和使用 – 尹成的技术博客

版权宣称:本文是关心Blogger Yin Cheng的QQ77025077的原型文字。,迎将转载民事侵权行为。。

    前番we的所有格形式议论了应用类模板的好的。,介绍we的所有格形式将解说到何种地步定义和应用类模板。

    类模板的定义和类的定义很类似性,最好的变化多的的慢车是类模板必要应用template保留字来衍生物类模板必要应用的剽窃典型。

    类模板定义的表达大抵列举如下:

    template<模板决定因素典型列表>

    class 模板类名

    {

        …

    };

    为了便于您的了解。,经过加盖于说明了这点。。

例1 定义和应用堆栈类模板

的情节:   

#ifndef _MYSTACK_HPP_
#define _MYSTACK_HPP_

#include
using namespace std;

template class CMyStack;
template
class CNode
{
public:
	CNode(T v) :m_Data(v), m_pNext(NULL){};
protected:
	T m_Data;
	CNode * m_pNext;
	friend class CMyStack;
};

template
class CMyStack
{
public:
	CMyStack():m_pFirst(NULL){};
	~CMyStack()
	{
		CNode * pTemp = m_pFirst;
		while (pTemp)
		{
			m_pFirst = m_pFirst->m_pNext;
			delete pTemp;
			pTemp = m_pFirst;
		}
	}
	bool 推(t) 装满)
	T Top() throw (std::runtime_error);
	void Pop();
	bool IsEmpty();
	void Print();
protected:
	CNode * m_pFirst;
};

template
bool CMyStack::推(t) 装满)
{ 
	CNode * pNewNode = new CNode(装满);
	if (!pNew装满)
	{
		return false;
	}
	pNewNode->m_pNext = m_pFirst;
	m_pFirst = pNewNode;
	return true;
}

template
T CMyStack::Top() throw (std::runtime_error)
{
	if (!m_pFirst)
	{
		throw STD::RunTimeTyError(堆栈) is empty.");
	}
	return m_pFirst->m_Data;
}

template
void CMyStack::Pop()
{
	T val;
	CNode * pTempNode = m_pFirst;
	if (!m_pFirst)
	{
		return;
	}
	m_pFirst = m_pFirst->m_pNext;
	delete pTempNode;
	pTempNode = NULL;
	return;
}

template
bool CMyStack::IsEmpty()
{
	if (!m_pFirst)
	{
		return true;
	}
	return false;
}

template
void CMyStack::Print()
{
	CNode * pTempNode = m_pFirst;
	while (pTemp装满)
	{
		cout << pTempNode->m_Data << "\t";
		pTempNode = pTempNode->m_pNext;
	}
	cout << endl;
}
#endif

的情节:

#include ""
void main()
{
	CMyStack IntStack;
	CMyStack FloatStack;

	(1);
	(2);
	(3);
	(4);
	(5);
	cout << "整型栈:" << endl;
	();
	while (!())
	{
		cout << "栈顶" << () << endl;
		cout << "出栈" << endl;
		();
	}
	();
	();
	();
	();
	();
	cout << "浮点栈:" << endl;
	();
	while (!())
	{
		cout << "栈顶" << () << endl;
		cout << "出栈" << endl;
		();
	}

	system("pause");
}

作用出路如图1所示。:

图1 栈类模板的作用产生

    例1,定义了堆栈类模板CMYStUp。,应用堆栈类模板cMyStUp。。栈类模板的定义率先以template领导,附加一对排除。,排除中输出模板决定因素,后来地模板的定义和类的定义根本分歧。必要重读的另一点是,倘若模板类说话中肯构件行使职责使待在床上或室内在模板更,您必要在行使职责定义领先写作模板。,附加一对排除。,排除中输出模板决定因素,同时,在模板CLAS后来地应当添加一对排除。,排除中输出模板决定因素。

    例1,模板类名,附加一对排除。,排除中输出类模板决定因素,后来地,模板类女朋友的应用方式与普通方式平稳的。。

    小结

    介绍,we的所有格形式首要议论到何种地步定义类模板又到何种地步应用类TEM。。我期望你能回去运用。,深化发现。

发表评论

Close Menu