assignment operator with pointers c++
class Array { public: Array(int N) { size = N; arr = new int[N]; } //destructor ~Array() { delete[] arr; } //copy constructor Array(const Array& arr2) { size = arr2.size; arr = new int[size]; std::memcpy(arr, arr2.arr, size); } //overload = operator Array& operator=(const Array& arr2) { if (this == &arr2) return *this; //self assignment if (arr != NULL) delete[] arr; //clean up already allocated memory size = arr2.size; arr = new int[size]; std::memcpy(arr, arr2.arr, size); return *this; } private: int size; //array elements int *arr; //dynamic array pointer };