C++クラスのpublic、protected、privateの挙動確認

派生クラスから基底クラスの要素にアクセスできるか

基底クラスの指定 \ 派生クラスの継承の仕方 public protected private
public
protected
private × × ×

クラス外から基底クラスの要素にアクセスできるか

Baseクラスの指定 \ 派生クラスの継承の仕方 public protected private
public × ×
protected × × ×
private × × ×

派生クラスで基底クラスの要素がどう扱われるか

Baseクラスの指定 \ 派生クラスの継承の仕方 public protected private
public public protected private
protected protected protected private
private no access no access no access

まとめ

クラス外からはpublicのみアクセス可能。派生クラスからは(規定クラスをどのような指定子で継承したかによらず)publicとprotectedがアクセス可能。
派生クラスで規定クラスの要素がどう扱われるかは、「基底クラスの指定子」と「継承指定子」の厳しい方となる。