标签:问题 缺省 turn queue friend 需要 item template c++学习
类模板的目的
类模板的定义格式
类模板的成员
类成员函数的模板
template<typename T>class A
{
public:
template<typename U> T f(const U &u);
};
template<typename T> template<typename U>
T A<T>::f(const U &u)
{
}
类模板
类模板的体化
类模板的显式体化
类模板的显式特化
类模板的缺省模板参数
//队列 #include <iostream> #include <cstdlib> //空队列异常类 class EQueueEmpty {}; //队列项类前置声明 template<typename T> class JuQueueItem; //队列类 template<typename T> class JuQueue { public: JuQueue:_head(NULL),_tail(NULL){} virtual JuQueue(); virtual void Enter(const T &item); virtual T Leave(); bool IsEmpty() const { return _head == 0; } private: JuQueueItem<T> *_head, *_tail; }; //队列项类,单项链表结构 template<typename T> class JuQueueItem { friend class JuQueue<T>; public: JuQueueItem(const T &item):_item(item),_next(0){} private: T _item; JuQueueItem<T> *_next; }; //队列类析构函数 template<typename T> JuQueue<T>::~JuQueue() { while (!IsEmpty()) { Leave(); } } //入队 template<typename T> void JuQueue<T>::Enter(const T &item) { JuQueueItem<T> *p = new JuQueueItem<T>(item); if (IsEmpty()) _head = _tail = p; else _tail->_next = p, _tail = p; } //出列 template<typename T> T JuQueue<T>::Leave() { if (IsEmpty()) throw EQueueEmpty(); JuQueueItem<T> *p = _head; T _retval = p->_item; _head = _head->_next; delete p; return _retval; } int main() { JuQueue<int> *p = new JuQueue<int>; for (int i = 0; i < 10; i++) { p->Enter(i); } std::cout << p->Leave() << std::endl; int *r = new int(10), *p = new int(20); JuQueue<int*>*t = new JuQueue<int*>; t->Enter(r); t->Enter(q); int *s = t->Leave(); std::cout << *s << std::endl; return 0; }
标签:问题 缺省 turn queue friend 需要 item template c++学习
原文地址:http://www.cnblogs.com/hujianglang/p/6261839.html