1. Shallow and Deep copy #

Created Friday 10 January 2020

Shallow vs deep copy?

Need for deep copy #

Context #

Example - A dynamic array. Assume extra code is present wherever necessary.

class DynamicArray
{
	int size, capacity;
	int * arr;
	...

	DynamicArray(const& A) // deep copy
	{
		size = A.size, capacity = A.capacity;
		arr = new int[capacity]; // allocate new memory
		for(int i=0; i<size; i++)
			arr[i] = A.arr[i];
	}

	void operator=(const& B) // A = B
	{
		size = B.size, capacity = B.capacity;
		delete[] arr; // delete current memory
		arr = new int[capacity];
		for(int i=0; i<size; i++)
			arr[i] = A.arr[i];
	}
}