はじめに
メンバイニシャライザ(初期化リスト)を使うと、クラスのメンバ変数を代入ではなく、初期化することができます。
コンストラクタの定義
X::X() : メンバ変数名A(初期化子A), メンバ変数名B(初期化子B), ... { }
厳密には、メンバ変数1つ1つの初期化を行っている部分がメンバイニシャライザで、全体としてはメンバイニシャライザリストと呼びます
重要ポイント
- メンバイニシャライザで記述した初期化子は、メンバ変数のコンストラクタの実引数として渡されます
- メンバ変数のコンストラクタが、引数無しで呼び出せるのであれば、メンバイニシャライザに記述しなくても結果は変わりませんが、空の ( ) を指定して、明示的に初期化できます
- メンバ変数が const の場合、メンバイニシャライザで初期化しなければなりません
#include <iostream> #include <string> #include <iostream> class Person { public: std::string name; int age; Person(std::string name, int age) : name(name), age(age){ } }; int main(void){ // Your code here! Person person("Mickey", 15); std::cout << person.name << std::endl; std::cout << person.age << std::endl; }
参考リンク
コンストラクタとデストラクタ | Programming Place Plus Modern C++編【言語解説】 第7章