|
Программирование >> Расширенная версия языка c++
Приложение В. Ответы опросы и решения упражнений 633 6. /* ой программе показан родовой класс stack, в который встроена обработка исключительных ситуаций ttinclude <iostrecLni> using namespace std; #define SIZE 10 Создание родового класса stack template <class class stack ( StackType stck[SIZE]; содержит стек int tos; индекс вершины стека public: void { tos = инициализация стека void push (StackType ch} ; помещает объект в стек StackType pop () ; выталкивает объект из стека Размещение объекта в стеке template <class StackType> void stack<StackType>: ;push(StackType ob) try { =SIZE) throw SIZE; catch (int) { cout Стек полон\п ; return; stck[tos] = ob; to3++; Выталкивание объекта из стека template <class StackType stack<StackType>: :pop{} try { S=0) throw 0; catch (int) { cou Стек пуст\п ; return 0; возврат нуля при пустом стеке tos-; return Самоучитель С++ int main О - ! Демонстрация стеков stack<char -1, s2; ание двух стеков int i ; Инициализация стеков sl.iiiiL(j; s2.init(); si. push ( a) ; s2.push{x); . sl.pushCb s2.push( y); sl.pushCc) I . :- . - . s2.push(z); for(i=0; i<3; i+4) cout Из стека 1: sl.popO \n ; for(i=0; i<4; 1+4) cout Из стека 2: s2.pop() \n ; Демонстрация стеков со значениями типа double создание двух стеков Инициализация стеков dsl . init () ; , . - с - ds2.init(); dsl.pushd.l) ds2.push(2.2) dsl.push(3.3) ds2,push(4.4) dsl.push(5.5) ds2.push(6.6) for (1=0; i<3; cout for(i=0; i<4; cout return 0; Из стека 1: dsl.pop() << \n ; Из стек ds2.pop() << \n i 8. Если при ошибке выделения памяти оператор new возбуждает исключительную ситуацию, вы можете быть уверены, что эта ошибка будет обработана тем или иным способом (даже путем аварийного завершения программы). И наоборот, если при ошибке выделения памяти оператор new возвращает нулевой указатель, а вы забгли организовать контроль этого возвращаемого значения, то такая ошибка может остаться незамеченной и в конечном итоге при попытке использования нулевого указателя привести к краху программы, причем будет чрезвычайно трудно обнаружить причину этого. Приложение В. Ответы на вопросы и решения упражнений ГЛАВА 12 Повторение пройденного 1. В C++ родовая функция определяет общий набор операций для данных разных типов. Она реализуется с помощью ключевого слова template. Ниже представлена основная форма родовой функции: template <class rtiipe> шюзвр знячвняв нмя функцз1л1сп параматров) { ... 2. В C++ родовой класс определяет все операции но действительные данные задаются в качестве параметра при создании объекта этого класса. Ниже представлена основная форма родового класса: template <clas И;урв> class имяг ж:ласса I 3. ttinclude <iostream> using namespace std; Возвращает значение а в степени b template <class X> X gexp{X a, X b) X i, result = 1; forCi=0; i<b; resul= a; return result; int mainO cout gexp(2, 3) endl; cout gexpdO.O, 2.0); return 0; -< . 4. ttinclude <iostreara> ttinclude <fstream> using namespace std;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |