// staken.cpp // перегрузка функций базового и производного классов #include using namespace std; #include // для exit ( ) /////////////////////////////////////////////////////////// class Stack { protected: // Замечание: использовать private нельзя enum { MAX = 3 }; // размер стека int st[ MAX ]; // данные, хранящиеся в стеке int top; // индекс последнего элемента в стеке public: Stack ( ); // конструктор { top = -1; } void push ( int var ) // помещение числа в стек { st[ ++top ] = var; } int pop ( ) // извлечение числа из стека { return st[ top-- ]; } }; /////////////////////////////////////////////////////////// class Stack2 : public Stack { public: void push ( int var ) // помещение числа в стек { if ( top >= MAX – 1 ) // если стек полон, то ошибка { cout << "\nОшибка: стек полон"; exit ( 1 ); } Stack::push ( var ); // вызов функции push класса Stack } int pop ( ) // извлечение числа из стека { if ( top < 0 ) // если стек пуст, то ошибка { cout << "\nОшибка: стек пуст\n"; exit ( 1 ); } return Stack::pop ( ); // вызов функции pop класса Stack } }; /////////////////////////////////////////////////////////// int main ( ) { Stacks s1; s1.push ( 11 ); // поместим в стек несколько чисел s1.push ( 22 ); s1.push ( 33 ); cout << endl << s1.pop ( ); // заберем числа из стека cout << endl << s1.pop ( ); cout << endl << s1.pop ( ); cout << endl << s1.pop ( ); // ой, а данных-то больше нет cout << endl; return 0; }