Protection levels in classes
C++ allows three levels of protection of attributes in classes. These are public, protected and
These levels restrict access to identifiers, they do not hide them. Name conflicts with protected
attributes occur as if they were not protected at all.
A private attribute can only be used by functions within that class, by member initialisers and by
friend functions of that class. It is not accessible to code outside the class, nor to code in a sub-
class function. This is the most restrictive level of access.
A protected attribute cannot be accessed from outside the class, only within functions of its class or
classes derived from it publicly or protectedly or within friend functions of these classes. It is kept
in the family. This is important when using inheritance to define layered software designs, since
making an atribute private can seal it above a layer, but protecting an attribute leaves it open to use
in a controlled way.
Public attributes are not hidden at all and can be accessed in the same way as members of structs.
Next note in series
Back to index