visibilité par défaut des membres de classe / struct C ++

En C ++, pourquoi private est-il la visibilité par défaut pour les membres des classes, mais public pour les structs?

C ++ a été introduit comme un sur-ensemble de C. Les structures ont été transférées de C, où la sémantique de leurs membres était celle du public. Un grand nombre de code C existe, y compris les bibliothèques souhaitant travailler avec C ++, qui utilisent des structures. Les classes ont été introduites en C ++ et, conformément à la philosophie d’encapsulation OO, leurs membres sont privés par défaut.

Parce qu’une classe est une manière habituelle de faire de l’orientation d’object, ce qui signifie que les variables membres doivent être privées et avoir des accesseurs publics – c’est bon pour créer un faible couplage . Les structures, quant à elles, doivent être compatibles avec les structures C, qui sont toujours publiques (il n’ya pas de notion de public et de privé dans C), et n’utilisent pas d’accesseurs / mutateurs.

Probablement pour la compatibilité avec les structures C. De cette façon, les structures déclarées en code C continueront de fonctionner de la même manière lorsqu’elles sont utilisées dans du code C ++.