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