c++代码解释

C++ code explain?

本文关键字:解释 代码 c++      更新时间:2023-10-16

我正在从一本书中学习c++,其中有1行代码我不理解。该程序应该模拟在自动取款机前排队的人。我看不懂这一行:

item = front->item; // Is it necessary and what does it do ?

bool Queue::dequeue(Item & item)的末尾。它必须对指针做一些事情,但是当我删除这一行时,程序工作得很好。

下面是代码的重要部分:

class Customer
{
private:
    long arrive; 
    int processtime;
public:
    Customer() { arrive = processtime = 0; }
    void set(long when);
    long when() const { return arrive; }
    int ptime() const { return processtime; }
};
typedef Customer Item;
class Queue
{
private:
    struct Node { Item item; struct Node * next; };
    enum { Q_SIZE = 10 };
    Node * front; 
    Node * rear; 
    int items; 
    const int qsize;
    Queue(const Queue & q) : qsize(0) { }
    Queue & operator=(const Queue & q) { return *this; }
public:
    Queue(int qs = Q_SIZE); 
    ~Queue();
    bool isempty() const;
    bool isfull() const;
    int queuecount() const;
    bool enqueue(const Item &item); 
    bool dequeue(Item &item); 
};
Queue::Queue(int qs) : qsize(qs)
{
    front = rear = NULL;
    items = 0;
}
Queue::~Queue()
{
    Node * temp;
    while (front != NULL) 
    {
        temp = front; 
        front = front->next; 
        delete temp; 
    }
}
bool Queue::enqueue(const Item & item)
{
    if (isfull())
        return false;
    Node * add = new Node; 
    if (add == NULL)
        return false; 
    add->item = item; 
    add->next = NULL;
    items++;
    if (front == NULL) 
        front = add; 
    else
        rear->next = add; 
    rear = add; 
    return true;
}
bool Queue::dequeue(Item & item)
{
    if (front == NULL)
        return false;
    item = front->item; // Is it necessary and what does it do ?
    items--;
    Node * temp = front; 
    front = front->next; 
    delete temp; 
    if (items == 0)
        rear = NULL;
    return true;
}

dequeue()方法从队列中删除前节点。在从队列中删除节点之前,所讨论的行将前节点的item字段分配给item输出变量(通过引用传递)。