They’re none of your caller’s business: Keep data members private. Only in the case of simple C-style
struct types that aggregate a bunch of values but don’t pretend to encapsulate or provide behavior, make all data members public. Avoid mixes of public and nonpublic data, which almost always signal a muddled design.
Information hiding is key to good software engineering (see Item 11). Prefer making all data members private; private data is the best means that a class can use to preserve its invariants now, and to keep preserving them in the face of future changes.
Public data is bad if a class models an abstraction and must therefore maintain ...