Assume that you have a class Distance and two objects dist1 and dist2. You have initialized the object dist1. Now you do:
Distance dist2(dist1) to create a copy of dist1into object dist2.
Have all members of dist1 been copied intodist2? What does not get copied?
That depends on if the class has a copy constructor.
If the class has no copy constructor, then C++ will simply copy the memory from one class object to another. In many cases this will work. But what if the object contains a pointer? In this case, the pointer is copied and both classes reference the same memory location. This is probably not what you want, and so you should have a copy constructor to copy data appropriately.