//クラス宣言部
#include <iostream> using namespace std; #define SIZE 10 // 文字を保存するstackクラスを宣言する class stack { char stck[SIZE]; // スタック領域を確保する int tos; // スタック先頭の索引 public: stack(); // コンストラクタ (※1) ~stack(); // デストラクタ (※2) void init(); // スタックを初期化する void push(char ch); // スタックに文字をプッシュする char pop(); // スタックから文字をポップする }; |
//クラス実現部
// コンストラクタ stack::stack() { cout << "スタックを生成する\n"; tos = 0; } // デストラクタ stack::~stack() { cout << "スタックを破棄する\n"; } // スタックを初期化する void stack::init() { tos = 0; } // 文字をプッシュする void stack::push(char ch) { if(tos==SIZE) { cout << "スタックは一杯です"; return; } stck[tos] = ch; tos++; } // 文字をポップする char stack::pop() { if(tos==0) { cout << "スタックは空です"; return 0; // スタックが空の場合はヌルを返す } tos--; return stck[tos]; } |
//クラス利用部
int main(){ stack s1, s2; // 2つのスタックを作成する (※3) int i; s1.push('a'); s2.push('x'); s1.push('b'); s2.push('y'); s1.push('c'); s2.push('z'); for(i=0; i<3; i++) cout << "s1をポップする: " << s1.pop() << "\n"; for(i=0; i<3; i++) cout << "s2をポップする: " << s2.pop() << "\n"; return 0; // (※4) } |