c++操作符重载=
C++ operator overload =
我看不懂这段代码的最后一部分。这个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
。
相关文章:
- 重载操作符+:表达式必须是整型或无作用域枚举类型
- 重载操作符
- 如何重载操作符==外模板类使用友元函数
- 重载*操作符,使其在左右两边都工作
- 重载操作符<对于非随机迭代器
- 在c++中重载操作符的时间和原因
- 如何在c++中重载=操作符来通过引用进行复制
- 如何在c++中获取定义为友元的重载操作符的地址
- 使用重载操作符的文件操作表达式没有给出预期的结果
- 重载操作符()
- 重载操作符()并在类内使用
- 类中的重载操作符+
- 定时使用重载操作符
- c++带类的重载操作符
- 用列表容器重载[]操作符
- 重载操作符=
- 任何重载操作符()的静态检测
- 重载操作符以处理类对象
- 在使用另一个类的类中重载操作符==
- 派生类和基类中的重载操作符不同