Member Initializers in C++

(Acknowledgements to https://www.modernescpp.com/index.php/c-core-guidelines-constructors/, by Rainer Grimm)

Initializing class members directly in the class body makes the writing of constructors a lot easier. Sometimes it makes it unnecessary, or redundant. Class X1 classically defines its members (before C++11) and X2 in a preferred way. A nice side effect is that the compiler automatically generates the constructor for X2.

class X1 { // BAD: doesn't use member initializers
    string s;
    int i;
public:
    X1() : s{"default"}, i{1} { }
    // ...
};

class X2 {
    string s = "default";
    int i = 1;
public:
    // use compiler-generated default constructor
    // ...
};