Item 22: Declare data members private(Effective C++)
Declare data members private. It gives clients syntactically uniform access to data, affords fine-grained access control, allows invariants to be enforced, and offers class authors implementation flexibility.
protected is no more encapsulated than public.
protected is no more encapsulated than public.