///////////////////////////////////////////////
by default, the type of this is a const pointer to the nonconst version of the class type
T * const
A const following the parameter list indicates that this is a pointer to const.
Member functions that use const in this way are const member functions.
Objects that are const, and references or pointers to const objects, may call only const member functions.
we do not need to use the implicit this pointer to access the members of the object on which a member function is executing. However, we do need to use this to access the object as a whole
/////////////////////////////////////////////////
the member declarations are compiled first,
after which the member function bodies, if any, are processed.
/////////////////////////////////////////////////
a class is itself a scope
The name of a member defined outside the class must include the name of the class of which it is a member
//////////////////////////////////////////////////
Functions defined in the class are implicitly inline
////////////////////////////////////////////////////////////////////