コンストラクターの初期化子リストを使用してメンバー変数を初期化しています。コンストラクターのパラメーターの名前がデータ メンバーと同じでない場合は、より明確になります。
Features(int a,int b,int c,int d)
: F1(a), F2(b), F3(c), F4(d) { }
コード内のローカル変数と簡単に識別および区別できるように、データ メンバーに何らかの命名規則を設定すると便利です。例は、接頭辞m_
または末尾の使用_
です。
struct Features {
int m_f1;
int m_f2;
int m_3f;
int m_f4;
Features(int f1,int f2,int f3,int f4)
: m_f1(f1), m_f2(f2), m_f3(f3), m_f4(f4) { }
};
これらのコンストラクタは両方とも、次のように使用できます。
Features f(11,22,33,44);
std::cout << f.m_f1 << "\n"; // prints 11
std::cout << f.m_f2 << "\n"; // prints 22
std::cout << f.m_f3 << "\n"; // prints 33
std::cout << f.m_f4 << "\n"; // prints 44
このコンストラクターが定義されているという事実は、コンパイラーがデフォルトのコンストラクターを提供しなくなることを意味することに注意してください。したがって、これを実行できるようにしたい場合:
Features f;
次に、独自のデフォルト コンストラクターを提供する必要があります。
Features() : m_f1(), m_f2(), m_f3(), m_f4() {} // initializes data members to 0