Access Specifiers
Access specifiers restrict who can access a member. You can use an access specifier before a base-class name in a class definition and have access specifier labels within a class definition. The access specifiers are:
public
Anyone can access a public member.
protected
Only the class, derived classes, and friends can access protected members.
private
Only the class and friends can access private members.
In a class
definition, the
default access for members and base classes is private
. In a struct
definition, the default is public
. That is the only difference between a
class
and a struct
, although by convention, some
programmers use struct
only for POD
classes and use class
for all other
classes.
The access level of a base class affects which members of the base class are accessible to users of a derived class (not the derived class’s access to the base class). The access level caps the accessibility of inherited members. In other words, private inheritance makes all inherited members private in the derived class. Protected inheritance reduces the accessibility of public members in the base class to protected in the derived class. Public inheritance leaves all accessibility as it is in the base class.
The access level of a base class also limits type casts and conversions. With public inheritance, you can cast from a derived class to a base class in any function. Only derived classes and friends can cast to a protected base class. For private inheritance, only the class ...
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.