If this object is passed into a function by value, a copy will be made, and the new object's numerator will be 3, denominator 4. Consider, however, the Directory class of the phone book example.
The member data variables were currentsize and maxsize (both of type int), and a pointer, entry List (of type Entry * ), which pointed to dynamically allocated data outside the actual object.
An assignment operator sets an existing object's state to that of another existing object.
In situations with dynamic allocation, this may mean that old dynamic space must be cleaned up first before the copy is made.
Typically it is not a valid address, so trying to use delete makes your program crash.
One way to solve this is to assign any necessary data members values before calling the assignment operator.
The automatic versions of the Copy Constructor and the Assignment operator overload are similar to each other, and their default versions are always built in a standard way.
A copy constructor IS a constructor, so it is a function with the same name as the class and no return type (just like any constructor).
To return the object, we need to be able to refer to an object from inside the object itself.
From inside any member function, an object has access to its own address through a pointer called ) Like the copy constructor, the original object needs to be passed in, so there will be one parameter (of the same type as the object itself).