c++操作符重载=

C++ operator overload =

本文关键字:重载 操作符 c++      更新时间:2023-10-16

我看不懂这段代码的最后一部分。这个copy()函数实际上是做什么的?为什么删除的内存数据可以复制到m_array?

void IntArray::operator=(const IntArray& other) {
    int* array = new int[other.m_size];
    delete[] m_array;
    m_array = array;
    m_size = other.m_size;
    copy(other.m_array, other.m_array + m_size, m_array);

是类IntArray的赋值操作符重载。这个类有一个动态数组m_array作为成员变量。因此,意图是将数据从IntArray类型的对象other复制到当前对象。在复制之前,我们首先需要清理当前对象m_array中的数据及其分配的内存。所以我们调用delete [] m_array。接下来,我们需要调整当前对象m_array的大小,以匹配other对象的m_array的大小。因此,在第一行进行堆分配,并将堆位置分配给当前对象的m_array。在最后一个copy语句中,将数据从other对象的m_array复制到当前对象的m_array