Is there any particular reason that all data members in a class are private by default in C++?
The reasoning is that the public parts of a class should be explicitly made public.
The interesting thing about this (to me anyway) is that the first line after the opening brace of many, many class definitions is public:
. Most readers of a class are interested in the public bits, since that's what they interact with, and so many class definitions have their public bits first anyway.
C++'s access specifiers apply to the range that follows them - I think Java and C#'s technique of having each member to specify the visibility of the member (with a sensible default) is preferable.