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

1 ... 5 6 7 [ 8 ] 9 10 11 ... 227


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

- - - - = s:

linclude <iostream>

using namespace std;

clas lass {

public:

теперь а открыта int a;

и здесь не нужн1 функции а () и get a ()

int main О .

myclass оЫ, оЬ2; ., : . .-

здесь есть явный доступ к а оЫ.а = 10; оЬ2.а = 99;

cout obi.а \п ; .

cout оЬ2.а \п ;

return 0;

В этом примере, поскольку а объявлена открытым членов lass, к ней имеется явный доступ из main(). Обратите внимание, как оператор точка (.) используется для доступа к а. Обычно, когда вы вызываете функцию-член, или осуществляете доступ к переменной-члену не из класса, которому они за именем объекта должен следовать оператор точка (.), а за ним имя члена. Это необходимо для исчерпывающего определения того, с членом какого объекта вы имеете дело.

4. Чтобы по достоинству оценить возможности объектов, рассмотрим более практичный пример. В этой программе создается класс реализующий

стек, который можно использовать для хранения символов:

ttinclude <iostream>

using namespace std;

#aei-Lu;.= SIZE 10 . . - -. ,:j

даление класса stack для символов . т .

class stack { .

cha SIZE]; содержит стек int tos; индекс вершины стека

public:

voi t(); инициализация стека voi ar ch) ; помещает в стек свол cha О; выталкивает из стека сш-.ш,..: ....

}; . ,



Инициализация стека void stack::init()

tos=0;

Помещение ствола в стек void stack; :pusbiuiiuJ: cn] i

cou- Стек полон ; return;

stck[tos] = ch; tos++;

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

char stack: :i-.,p,;

cou Стек ст ;

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

tos-;

return

stac s2; создание двух стеков

int i; I- .

инициализация стеков

si. init 0 . ./ .

s2.init();

si .push ( a );( - , . , .

s2.push(x); si.push(b);

s2.push(y); Mi::: vir . i . i.

si,push rc ) ; s2.push (г);

for (i=0;i<3;i++) cou сол из з1: sl.popO \n ; for(i=0;i<3; cou сол из s2: s2.pop() \n ;

return 0;



1. Введите и выполните программы, приведенные в этом разделе, если это еще не сделано.

2. Создайте клас rd, который поддерживает каталог библиотечных карточек. Этот класс должен хранить заглавие книги, имя автора и выданное на руки число экземпляров книги. Заглавие и имя автора храните в виде строки символов, а количество экземпляров - в виде целого числа. Используйте открытую функцию-член store() для запоминания информации о книгах и открытую функцию-член show() для вывода информации на экран. В функцию mainO включите краткую демонстрацию работы созданного класса.

3. Создайте класс с циклической очередью целых. Сделайте очередь длиной 100 целых. В функцию main() включите краткую демонстрацию ее работы.

1.6. Некоторые отличия языков С и C++

У языка C++ есть ряд небольших отличий от С. Хотя каждое из этих отличий само по себе незначительно, вместе они достаточно распространены в программах C++. Поэтому перед тем как двинуться дальше, обсудим эти отличия.

а Во-первых, если в С функция не параметров, ее прототип содер-

жит слово void в списке параметров функции. Например, если в С функ-

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

символ из з1: с символ из 31; b символ из з1; а символ из s2; г символ из символ s2: х

Давайте теперь детально проанализируем программу. Класс stack содержит две закрытые переменные: stck и tos. Массив stck содержит символы, фактически помещаемые в стек, а tos содержит индекс вершины стека. Открытыми функциями стека являются init(), push() и рор(), которые, соответственно, инициализируют стек, помещают символ в стек и выталкивают его из стека.

Внутри функции iriО создаются два стекачТ и s2, и по три символа помещаются в каждый из них. Важно понимать, что один объект (стек) не зависит от другого. Поэтому у символов в si нет способа влиять на символы в s2. Каждый объект содержит свою собственную копию stck и tos. Это фундаментальная для понимания объектов концепция. Хотя все объекты класса имеют общие функции-члены, каждый объект создает и поддерживает свои собственные данные.



1 ... 5 6 7 [ 8 ] 9 10 11 ... 227

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