// 25_25-8.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

int cpsmp1_id = 0;

class CPsmp1 {	// 通常のクラス
private:
	int dt, ID;
public:
	CPsmp1() { dt = 0; ID = ++cpsmp1_id; }	// コンストラクタ
	CPsmp1(int n) { dt = n; ID = ++cpsmp1_id; }	// コンストラクタ
	void disp() { cout << "dt=" << dt << " ID=" << ID << '\n'; }
};

int cpsmp2_id = 0;	// ID供給用

class CPsmp2 {	// 独自のコピーコンストラクタを用意したクラス
private:
	int dt, ID;
public:
	CPsmp2() { dt = 0; ID = ++cpsmp2_id; }	// コンストラクタ
	CPsmp2(int n) { dt = n; ID = ++cpsmp2_id;}	// コンストラクタ
	CPsmp2(const CPsmp2& obj) {
		dt = obj.dt;
		ID = ++cpsmp2_id;
	}
	void disp() { cout << "dt=" << dt << " ID=" << ID << '\n'; }
};

int _tmain(int argc, _TCHAR* argv[])
{
	CPsmp1 a(10);	// 初期値設定
	CPsmp1 b(a);	// デフォルトのコピーコンストラクタが使われる
	CPsmp1 c = a;	// 同上
	a.disp();
	b.disp();
	c.disp();

	CPsmp2 d(20);	// 初期値設定
	CPsmp2 e(d);	// 用意したコピーコンストラクタが使われる
	CPsmp2 f = d;	// 同上
	d.disp();
	e.disp();
	f.disp();

	MessageBox(NULL, _T("Check Console Window"), L"MessageBox", MB_OK);

	return 0;
}

