队列(queue) 之 c++模板(友元函数和运算符重载)

本文探讨了在C++中使用模板实现队列时,如何利用友元函数和运算符重载。文章指出,运算符重载通常作为友元函数,并提出了关于函数返回类型(bool或void)以及返回值传递方式(通过返回值或参数)的疑问,期待专家解答。
摘要由CSDN通过智能技术生成
#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);
};
// 队
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值