13項 初期化リストのメンバは、宣言した順に並べよう
"初期化リストのメンバは、宣言した順に並べよう"
初期化リストで初期化されるメンバの順番は、宣言した順番です。
例えば下のコード
class STR { public: STR(const char *p = "NULL") { cout << p << "\n"; } }; class C { public: //s1,s2,s3の順番に記述したが,,, C() : s1("1"), s2("2"), s3("3") { } private: //宣言された順番に初期化される STR s3; STR s2; STR s1; }; int main() { C c; ...
実行してみると、
画像のように、順番に初期化されることが分かります。
このことを忘れると、気付きづらく重大なエラーを起こすことがありますし、何より読みづらいです。