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
// ...
};