main.cpp
#include "rat.h"
#include <iostream>
using namespace std;
int main() {
CRat *r1, *r2, *r3;
r1 = new CRat(); // 一匹目のネズミ生成
r1->squeak();
CRat::showNum(); // ネズミの数を表示
r2 = new CRat(); // 二匹目のネズミ生成
r3 = new CRat(); // 三匹目のネズミ生成
r2->squeak();
r3->squeak();
delete r1; // 一匹目のネズミ消去
delete r2; // 二匹目のネズミ消去
CRat::showNum(); // ネズミの数を表示
delete r3; // 三匹目のネズミ消去
CRat::showNum(); // ネズミの数を表示
return 0;
}
rat.cpp
#include "rat.h"
#include <iostream>
using namespace std;
// ネズミの数の初期値を0に設定
int CRat::m_count = 0;
// コンストラクタ
CRat::CRat() : m_id(0) {
m_id = m_count; // ネズミの数を、IDとする。
m_count++; // ネズミの数を一つ増やす
}
// デストラクタ
CRat::~CRat() {
cout << "ネズミ:" << m_id << "消去" << endl;
m_count--; // ネズミの数を一つ減らす
}
// ネズミの数の出力
void CRat::showNum()
{
cout << "現在のネズミの数は、" << m_count << " 匹です。" << endl;
}
// ネズミが鳴く
void CRat::squeak()
{
cout << m_id << ":" << "チューチュー" << endl;
}
rat.h
#ifndef _RAT_H_
#define _RAT_H_
class CRat {
public:
// コンストラクタ
CRat();
// デストラクタ
~CRat();
// ネズミの数の出力
static void showNum();
// ネズミが鳴く
void squeak();
private:
// ネズミの番号
int m_id;
// ネズミの数
static int m_count;
};
#endif /* _RAT_H_ */
