#include <iostream>
using namespace std;
template<typename T> class queue;
template<typename T>
class queue_item
{
friend class queue<T>;
queue_item(const T &i):item(i),next(0){}// next的默认值
T item;
queue_item *next;
};// 和 struct类似的哦,当然也可以改为struct的哦
template<typename T>
class queue
{
public:
queue():head(0),tail(0),n(0){}// ==0必须得有,head tail的初值要不要?
queue(const queue &q);
queue &operator= (const queue &q);
~queue();
void push(const T &key);
void pop();
bool front(T &item);
bool back(T &item);
bool is_empty(){ return n == 0; }
size_t size()
{
return n;
}
void clear();
private:
queue_item<T> *head;
queue_item<T> *tail;// queue_item没有默认构造函数,不知道为何可以这样声明;因为他是指针,只分配指针大小的内存,不分配对象内存的
size_t n;
void copy_item(const queue &q);
};
// 队
队列(queue) 之 c++模板(友元函数和运算符重载)
最新推荐文章于 2021-11-16 23:22:47 发布
本文探讨了在C++中使用模板实现队列时,如何利用友元函数和运算符重载。文章指出,运算符重载通常作为友元函数,并提出了关于函数返回类型(bool或void)以及返回值传递方式(通过返回值或参数)的疑问,期待专家解答。
摘要由CSDN通过智能技术生成