Also, are you intending/required to delete all children when killing an ASTree object? Because that would affect the object created from copy constructor too - it's child points to the same addresses, so it would end up with list full of dead pointers.