首页 > 解决方案 > 实现复制构造函数、析构函数以及如何为队列重载赋值运算符

问题描述

这就是我所拥有的,但我不确定这是否有效。我不确定以这种方式复制是否有效,而且我想不出一种超载的方法。复制时,我给出相同的大小,将标题和尾部(第一个和最后一个元素的索引)设置到同一个位置,并将数组的每个元素复制到另一个元素中。重载在这里似乎很棘手。我以前做过重载,但从来没有使用循环数组队列。

#include <iostream>
using namespace std;

class CircArrayQueue
{
private:
    int *arr;
    int head;
    int tail;
    int size;
    CircArrayQueue()
    {
        arr = new int[5];
        head = -1;
        tail = -1;
    }
    CircArrayQueue(int s)
    {
        arr = new int[s];
        head = -1;
        tail = -1;
        size = s;
    }
    void copyQueue(CircArrayQueue &object)
    {   
        object.size = this->size;
        for (int i = 0; i < this->size; i++)
        {
            object.arr[i] = this->arr[i];
        }
        object.head = this->head;
        object.tail = this->tail;
    }
    ~CircArrayQueue()
    {
        delete[] arr;
    }


};

标签: c++constructoroverloadingdestructorcircular-queue

解决方案


我将学习的完美解决方案是复制交换习语,它可以完成工作。 什么是复制和交换成语?


推荐阅读