nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

メンバイニシャライザ(初期化リスト)[C++]

はじめに

メンバイニシャライザ(初期化リスト)を使うと、クラスのメンバ変数を代入ではなく、初期化することができます。

コンストラクタの定義

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章