C++ クラス継承時のpublic private protected

派生クラスを定義する際には、基本クラス名を書く必要がありますが、
それと同時にアクセス指定子も必要です。

このアクセス指定子は、派生時に基本クラスのクラスメンバの
アクセス指定子をどのように継承するか決めるモノです。

基本クラスに元々定義してあるクラスメンバのアクセス指定子を、
派生時に変更する必要がある場合に有効な機能です。

public指定の場合、基本クラスのクラスメンバのアクセス指定子を
そのまま継承します。(もっとも一般的な継承。)

privateメンバは、派生クラスからはアクセスできません。

protected指定の場合、
基本クラスのpublicメンバは、派生時に、
全てprotectedメンバとして引き継がれます。

protectedメンバのアクセス指定子はそのまま継承します。

privateメンバは、派生クラスからはアクセスできません。

private指定の場合、基本クラスのpublicメンバと
protectedメンバは、派生時に全てprivateメンバとして引き継がれます。

privateメンバは、派生クラスからはアクセスできません。

なお、この継承時のアクセス指定子を省略すると、
private指定として処理されます。

ただし、派生クラスのクラスキーワードがstructで定義してある場合は、
public指定として処理されます。

省略しない方が一般的な書き方だと思います。