A name declared within a member function hides a declaration of the same name
whose scope extends to or past the end of the member function's
class.
When the scope of a declaration extends to or past the end of a class
definition, the regions defined by the member definitions of that class are
included in the scope of the class. Members defined lexically outside
of the class are also in this scope. In addition, the scope of the
declaration includes any portion of the declarator following the identifier in
the member definitions.
The name of a class member has class scope and can only be used
in the following cases:
- In a member function of that class
- In a member function of a class derived from that class
- After the . (dot) operator applied to an instance of
that class
- After the . (dot) operator applied to an instance of a
class derived from that class, as long as the derived class does not hide the
name
- After the -> (arrow) operator applied to a pointer to an
instance of that class
- After the -> (arrow) operator applied to a pointer to an
instance of a class derived from that class, as long as the derived class does
not hide the name
- After the :: (scope resolution) operator applied to
the name of a class
- After the :: (scope resolution) operator applied to
a class derived from that class.
Related References
