The main difference is, that in first case the clas members are initialized and in the second case they are assigned. For non integral types it means, that in the second case you will use operator=
to assign values to your class members.
Commonly, it's preferred to use first case, because in that case class memebers are initialized before the constructor body.
Also, you can't use assignment on several cases, for example, when class member is declared const.