|
Программирование >> Расширенная версия языка c++
.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 так, чтобы память для стека выделялась динамически. При этом длина стека должна задаваться параметром конструктора. (Не забудьте освободить эту память с помощью деструктора.)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |