The preferred way to initialize all class members in a constructor is via initializer list. There is never a case where explicit assignment in the body is better. The latter should be used only when it isn't feasible/practical to initialize in the initializer list.
The reason for the initialization list being preferred over assignment is because the members can be initialized or constructed with their value once. Using assignment in a constructor means that the members are initialized or constructed with default values and then reassigned new values, so it's almost like doing it twice.