A struct has default member visibility of public, and the default inheritance from a struct is public. You can explicitly set members private, of course, and explicitly use private inheritance.
A class has default member visibility of private, and the default inheritance from a class is private. You can explicitly set members public, of course, and explicitly use public inheritance.
That's it.
There is a historical tendency to use struct for simple, plain old data (POD) and class for types with member functions, but that's just a convention.