Is there any particular reason that all data members in a class are private by default in C++?
Because it's better to be properly encapsulated and only open up the things that are needed, as opposed to having everything open by default and having to close it.
Encapsulation (information hiding) is a good thing and, like security (for example, the locking down of network services), the default should be towards good rather than bad.