実装された(純粋なものとは対照的に)仮想関数をprivateまたはprotectedとして宣言する理由があることは理解できます。 Afaikでは、実装された仮想メソッドがprotectedとして宣言されている場合、子クラスは基本クラスのメソッドを呼び出すことができます。 privateを宣言すると、基本クラスだけが仮想メソッドのデフォルト実装を呼び出すことができます。プライベートと保護された純粋な仮想関数に違いはありますか?
しかし、純粋な仮想では、基本的な実装はありません...純粋な仮想を私的または保護されたものとして宣言することは機能的に同等ですか?保護された純粋な仮想は、基本クラスの対応するメソッドを呼び出すことができないため意味がありません。保護された純粋な仮想が意味をなさないシナリオはありますか?
SOには似たようなトピックがいくつかありますが、私の質問に簡潔に答えたものは見つかりませんでした。
インターフェイスに 'friend'を実装することができます。 – Matthew
純粋仮想メソッドはbodyを持つことができ、base :: foo()のように明示的に呼び出すことができます。 – iammilind