繁体   English   中英

实现复制构造函数、析构函数以及如何为队列重载赋值运算符

[英]implementing a copy constructor, destructor, and how to overload assignment operator for queues

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

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


};

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM