初期化子を用いた場合の初期化順

SampleClass.h
#pragma once
class SampleClass
{
public:
    SampleClass();

private:
    int num{ 3 };
};
SampleClass.cpp
#include "SampleClass.h"

SampleClass::SampleClass() : num{2}
{
	num = 1;
}
main.cpp
#include <iostream>
#include "SampleClass.h"
using namespace std;
int main()
{
	SampleClass a;

	// ここでブレークポイントはって、numの中身を確認する

	std::cout << "テストプログラムを終了します。" << endl;

	return 0;
}

これの実行結果は、numが1となる。
具体的な初期化順は、ヘッダ側の宣言時の初期化子、コンストラクタの初期化子、コンストラクタの順になる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です