реализация конструктора копирования, деструктора и как перегрузить оператор присваивания для очередей - PullRequest
0 голосов
/ 25 апреля 2020

Это то, что у меня есть, но я не уверен, что это работает. Я не уверен, что копирование таким способом эффективно, и я не мог найти способ перегрузки. при копировании я даю одинаковый размер, устанавливая заголовок и хвост (индексы первого и последнего элемента) в одном месте, и просто копирую каждый элемент массива в другой. перегрузка здесь кажется хитрой. я сделал перегрузку раньше, но никогда с круговыми массивами очередей.

#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;
    }


};

1 Ответ

0 голосов
/ 27 апреля 2020

Идеальное решение, как я узнаю, это идиома копирования-свопинга, она делает свою работу. Что такое идиома копирования и обмена?

...