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

1 ... 163 164 165 [ 166 ] 167 168 169 ... 227


504 Самоучитель C++

stck [tos] = ch; .. ,. r,.-:\

tos++; - , . if. ir.T.-;-)<-.vi ,-, *

\ . , , ..

Выталкивание ствола из стека

char stack;:pop() *

if (tos=0) I t cou Стек пуст \n ; .

return 0; возврат нуля при пустом стеке

tos-; , . . :-, -v

return

) - * : : if::;..;: - . .ft;itr>

voi ckstack o) ; . , . , 7

stack

int i; . .

si.push(a); sl.push(b); sl.push(c);

3howstack(sl) ; .. . ,л

объект в функции inO по-прежнему существует cou < Сте все еще содержит слеющее: Nn ; for(i=0; КЗ; i++) cout sl.popO \n ;

return 0;

Вывод содержимого стека void o)

char

когда выполнение этой инструкции завершится, стек о опустеет

while(c=o.pop()) cou с \n ; cout \n ;

Эта программа выводит на экран следующее:

Работа конструктора стека -.



Приложение В. Ответы на вопросы и решения упражнений 505

Стек пуст

Сте si все еще содержит слеющее: с

2, Память для хранения целого, на которую указывает указатель р в объекте о, который используется при вызове функции negO, освобождается, когда при завершении функцией neg() своей работы копия объекта о удаляется; однако эта память все еще необходима для объекта о в функции mainO.

1. ftinclude <iostreain>

using namespace std;

class who {

char name; public:

who(char c) {

cou Создание объекта who tt ; i

cou name \n ;

~wh0() { couX Удаление объекта wh name \n ;

who makewho () ; .n -. ,.

who temp ( В) ;

return temp; , , . 1

int mainO (

who ob ( A) ; ,

makewho();

return 0;

J . . .

2. Имеется несколько ситуаций, в которгх возвращать объект бгло бы неправильно. Вот одна из таких ситуаций: если при создании объекта файл открывается, а при удалении объекта файл закрывается, тогда к закрытию файла приведет удаление временного объекта, которое происходит, когда функция возвращает объект.



506

Самоучитель C++

1. tinclude <iostream>

using namespace std;

clas рт2; предварительное объявление class prl I ,

int printing;

public:

prl 0 I printing = 0; }

void 5et J)rint(int status) { printing = status; . . .

friend in e(prl ol, pr2 o2) ; . .

class pr2 I

int printing;

...

public:

I printing } void (int status) I printing status;

...

friend in e{prl ol, pr2 o2) ;

Возвращаем истину при занятом принтере int inuse(prl ol, prl o2)

if (ol.printing I nting) return 1; else return 0;

prl pi; pr2 p2;

if(!inuse(pi, p2)) cou << Принтер свободенХп ;

cou << Установка для печати принтера р1 . . .\п ; pl,set print (1) ;

if(inuse(р1, р2)) cou Теперь принтер занят\п

cou Отключение принтера р1 ... \п ; :, р1.3et print(О) ;

if (!inuse(р1, р2)) cou Принтер свободенХп ;



1 ... 163 164 165 [ 166 ] 167 168 169 ... 227

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