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

1 ... 13 14 15 [ 16 ] 17 18 19 ... 227


.54 Самоучитель-~С++

cou Работа конструктора стек who \п ; ))

Помещение символа в стек

void stack: :pash(char ch) . . - .

if (tos==SIZE) {

cout Стек who полон \n ; -

return;

stck [tos]=ch; tos++;

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

char Stack: :pop()

if (tos==0) {

cout <: Стек who << пуст ; return 0; возврат нуля при стом стеке

tos-; ... , , . .

return

int main{)

образование автоматически инициализируемых стеков

stack si (А), s2(B) ;

int i; . -

si .push ( a ) ;

s2.push(x) ; . . :

sl.pushCb) ; . . ..- ,

s2.push(y);

si.push ( c) ; ... ., :.-

s2 . push ( z ) ;

Эт овет сообщения об ошибках

for(i=0; i<5; i++) cout свол из стека з1:

si. pop о \n ; for(i=0; i<5; i++) cou свол из стека s2 :

s2.pop() \n ;

return 0;

Присвоение имени объекту, как показано в примере, является особенно полезным при отладке, когда важно выяснить, какой из объектов вызывает ошибку.



3. Здесь показан новый вариант разработанного ранее класса strtype, в котором используется конструктор с параметром:

ttinclude <iostreain> ttinclude <cstring> ttinclude <cstdlib> using namespace std;

class strtype {

char *p;

int len; public:

strtype(char *ptr);

-Strtype0;

void ShowO ;

Strtype::strtype(char *ptr) (

len = strlen(ptr);

p = (char *) mallocden +1);

iftJp) {

cou Ошибка выделения памятиХп ; exit(l);

strcpy(p, ptr);

strtype: type () L

cou Освобождее памяти по адресу p\n ; free(p);

void strtype::show() [

cou p - длинам len; cout \n ;

> - -

int mainO

( , . .Г . -

strtype ка ) , s2 ( Мне нравится С++ ) ;

si.show О; s2.show() ;

return 0; *

:j ...

В этой версии класса strtype строка получает свое начальное значение с помощью конструктора.



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

4. Конструктору объекта можно передать не только константы, но и любые допустимые выражения с переменными. Например, в следующей программе для создания объекта используется пользовательский ввод:

tinclude 4iosLreain>

using namespace std; . ;

class myclass {

int i, j; =

public:

myclass (int a, int b) ; void showO ;

myclass: :myclass (int a, int b) \

i = a; j = b;

voidmyclass: : show( ) ... ..o:,

cout i j \n ; -

int main ( )

int X, y;

cou Введите два целых: ;

/ зование переменных для создания ob

myclass ob(x, у) ;

Ob.showO ; ip:. -

return 0; .,:-,чг

Эта программа иллюстрирует важное свойство объектов. Объекты могут создаваться по мере необходимости, точно в соответствии с возникающей в момент их создания ситуацией. Когда вы побольше узнаете о вы увидите, какой полезной является возможность создания объектов на ходу .

УпраАнения

1. Измените класс stack так, чтобы память для стека выделялась динамически. При этом длина стека должна задаваться параметром конструктора. (Не забудьте освободить эту память с помощью деструктора.)



1 ... 13 14 15 [ 16 ] 17 18 19 ... 227

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