nan, y´a des regles de bon sens pour utiliser ces differents concepts. A partir du moment ou tu connais leur utilisation, tu peux choisir le bon selon les utilisations.
Par ex. si tu fais une interface haut niveau, tu auras surement bcp de membres protected, puisque ta classe est destinee a etre derivee ; et tu conserves des membres prives pour des choses internes qui doivent restees cachees des classes derivees.
tu peux aussi jouer sur les construceur/destructeur/operateur private/protected pour limiter l´utilisation d´une classe, et par la meme gagner en robustesse et garantir sa bonne utilisation.
Bref, c´est treees vague, mais les 3 droits d´acces ont des utilisations bien specifiques. Quant aux friend, ils ont acces a tout, et ca denote en general d´un design de classes mal pense. L´utilisation de classes internes ou de compositions bilaterales permettent generalemente de solutionner proprement ces cas.