New Copy Constructor List::List(const List &o) { if (o.head) head = o.head->deep_copy(); else head = NULL; } Always testing like this is tedious and repetitive