== Why is this an issue?

When specifying base classes for a class, the access level is private by default. While private inheritance has its uses, it is far less used than public inheritance. Therefore:

* Either you want public inheritance, and you have to specify it
* Or you want private inheritance, and you should be explicit about this design decision, by specifying it too.


=== Noncompliant code example

[source,cpp]
----
class B {
};

class C : B {
};
----


=== Compliant solution

[source,cpp]
----
class B {
};

class C :  private B { // Or public, if it was private by mistake
};
----

== Resources

=== Related rules

* S5966 is a similar rule that deals with base visibility in structs
* S3540 is another rule that favors a different coding style for base classes. It should not be activated at the same time as this rule.

