Dois-je utiliser publiques ou privées de variables?

Je suis en train de réaliser un grand projet pour la première fois. J'ai beaucoup de classes et certains d'entre eux ont des variables publiques, certains ont des variables privées avec setter et getter méthodes et même avoir les deux types.

J'ai décidé de réécrire ce code à utiliser principalement d'un seul type. Mais je ne sais pas qui je dois utiliser la (les variables qui sont utilisées que pour les méthodes dans le même objet sont toujours privées et ne sont pas l'objet de cette question).

Je sais que la théorie quels moyens publics et privés nécessaires, mais ce qui est utilisé dans le monde réel, et pourquoi?

  • Le OO réponse serait d'utiliser des variables privées. Mais le modèle de la visibilité en C++ est tout à fait rompu (un peu moins le cas en C++11) et les membres privés peuvent provoquer de très surprenant si vous ne leur donnez pas uglified noms.
  • Wut?
  • Près d'une exacte dupe: stackoverflow.com/questions/1596432/...
  • Avant C++11, ayant une surcharge à l'aide de T::x dans sa signature serait la cause d'une erreur de disque dur si vous avez appelé une autre surcharge sur un type avec un privé x membre. Mais même en C++11, vous obtenez toujours des questions comme: gcc.gnu.org/bugzilla/show_bug.cgi?id=55713 où, au lieu d'ignorer les membres privés (ou bases), le compilateur insiste sur le fait de donner une erreur. Il y a certainement pire. Plusieurs membres du comité ont entendu l'appel de la C++ de contrôle d'accès cassé mais je pense qu'il l'a été pour des raisons différentes.