Программирование >>  Расширенная версия языка c++ 

1 ... 206 207 208 [ 209 ] 210 211 212 ... 227


Приложение В. Ответы опросы и решения упражнений 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;



1 ... 206 207 208 [ 209 ] 210 211 212 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика