A reference to an object in memory is the size of the memory address to that object, so passing objects by reference is an efficient mechanism. References are not traditional pointers. They serve as a handle to an object in memory. This feature also allows the function to be called in a variety of ways. This appears as if there are several different versions of the function.
Default arguments can take the place of function overloading and is a very efficient way to program.
Class constructors are perfect for using default arguments. Default argument are place in the function prototype. The following is an example of a constructor with default arguments. The unary scope resolution operator resolves a variable to global space. This allow for a uniform interface for different type as the parameters.