In the programs we’ve written so far, name lookup (the process of finding which declarations match the use of a name) has been relatively straightforward:
• First, look for a declaration of the name in the block in which the name was used. Only names declared before the use are considered.
• If the name isn’t found, look in the enclosing scope(s).
• If no declaration is found, then the program is in error.
The way names are resolved inside member functions defined inside the class may seem to behave differently than these lookup rules. However, in this case, appearances are deceiving. Class definitions are processed ...