There are no differences between structs and classes in this regard in C++. They all are called just class types.
Members of class types have no default values in general case. In order to for a class member to get a deterministic value it has to be initialized, which can be done by
- Default constructor of the member itself
- Constructor initializer list of the enclosing class
- Explicitly specified initializer for object of the enclosing class (that includes value-initialization and initialization with aggregate initializer).
Additionally, all objects with static storage duration are zero-initialized at the program startup.
Aside from the above cases, class members, once again, have no default values and will initially contain unpredictable garbage values.