Three kinds of access rights
Public : can be accessed by any entity
protected: only child classes and member functions of this class are allowed to access
Private: only member functions of this class are allowed to access
Three ways of inheriting
Public inheritance
Protect inheritance
Private inheritance
Combining results
In the inheritance method subclass of the base class
Public and public inherit => public
Public & protected Inherits => protected
Public & Private inheritance = > Private
Protected & Public Inherits => protected
Protected & Protected inherited => protected
Protected & Private inheritance = > Private
Private & Public Inheritance => subclass does not have permission to access
Private & Protected Inheritance => Subclass is not authorized to access
Private & Private inheritance = > subclass does not have access to
By the combination of the above results can be seen
1, public inheritance does not change the access rights of base class members
2. Private inheritance makes it private for all members of the base class to access permissions in the subclass
3. Protected inherits the public members of the base class into protected members of subclasses, and the access rights of other members are unchanged.
4. Private members in the base class are unaffected by inheritance, and subclasses are never entitled to access them.
In addition, when using private inheritance, there is another mechanism: grant access.
As we already know, when a base class is inherited in private, its public and protected members become private members in subclasses. In some cases, however, it is necessary to restore one or more inherited members in a subclass to their access rights in the base class.
C + + supports this goal in two ways
method One, using a using statement, which is recommended by the C + + standard
method Two, using the Access declaration, in the form of Base-class::member, where the location is at the appropriate access declaration at the subclass. (Note, you can only restore the original access rights, but not improve or reduce access rights)
Why do you want to define public protect private three access rights in C + +?
Some of the things we need to look out for outside, that is, public, if not, then the work we do will be meaningless, (no one else can use it).
If we don't want people to know the inner implementation details, then it's private, for example:
Copy Code code as follows:
Public
Count ()
{
Mycount ();
}
Private
Mycount ();
So, count is the external interface, and when implemented, we do not want to let outside know how to implement, use private, prevent it with mycount!
If we don't want to let people know, want to let their children know what (here involves inheritance), then can be used as a protected!
In this case, private is privately owned, protected can let the child know, public is open!