Главная » Просмотр файлов » Г. Шилтд - Самоучитель C++ (PDF)

Г. Шилтд - Самоучитель C++ (PDF) (1114887), страница 6

Файл №1114887 Г. Шилтд - Самоучитель C++ (PDF) (Г. Шилтд - Самоучитель C++ (PDF)) 6 страницаГ. Шилтд - Самоучитель C++ (PDF) (1114887) страница 62019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

Каждый объект содержит собственную копию всех данных, объявленных в классе. Это значит, что а в obi отлично от а в оЬ2.Каждый объект класса имеет собственную копию всех переменных, объявленных внутри класса.1. В качестве первого простого примера, рассмотрим программу, в которой используется myclass, описанный в тексте, для задания значений а для оЫ иоЬ2 и вывода на экран этих значений для каждого объекта:#include <iostream>using namespace std;class myclass {// закрытая часть myclassint a;public:void set_a{int mini);int get_a ( ) ;void myclass: :set_a(int num}a=num;Глава1.КраткийобзорC++_29int myclass: :get_a О{return a;}int main { }{myclass obi, ob2;obl.set_a(10) ;ob2.set_a(99) ;cout « o b l . g e t _ a ( ) « " \ n " ;cout « ob2.get_a() « " \ n " ;return 0;}Как и следовало ожидать, программа выводит на экран величины 10 и 99.2. В предыдущем примере переменная а в myclass является закрытой.

Это означает, что она непосредственно доступна только для членов myclass. (Это одиниз доводов в пользу существования открытой функции get_a().) Если вы попытаетесь обратиться к закрытому члену класса из той части вашей программы, которая не является членом этого класса, то результатом будет ошибкапри компиляции. Например, предположим, что myclass задан так, как показано в предыдущем примере, тогда компиляция функции mainQ вызоветошибку:// Этот фрагмент содержит ошибку#include <iostream>using namespace std;int main(){myclass obi, ob2;obi.

a = 10;оЬ2.а =99;// ОШИБКА! к закрытому члену нет// доступа для функции — не членаcout « obl.get_a() « "\n";cout « ob2.get_a() « "\n";return 0;3. Точно так же, как открытые функции-члены, могут существовать и открытыепеременные-члены. Например, если бы а была объявлена в открытой секцииmyclass, тогда к ней, как показано ниже, можно было бы обратиться из любой части программы:30_СамоучительC++^include <iostream>using namespace std;class myclass {public:// теперь а открытаint a;// и здесь не нужны функции set__a() и get_a()int main{){myclass obi, оЬ2;// здесь есть явный доступ к аоЫ.а = 10;оЬ2.а = 99;cout « оЫ.а « "\п";cout « оЬ2.а « "\п";return 0;В этом примере, поскольку а объявлена открытым членом myclass, к нейимеется явный доступ из main().

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

В этой программе создается класс stack, реализующийстек, который можно использовать для хранения символов:#include <iostream>using namespace std;^define SIZE 10// Объявление класса stack для символовclass stack {char stck[SIZE]; // содержит стекint tos; // индекс вершины стекаpublic :void init(); // инициализация стекаvoid push(char ch) ; // помещает в стек символchar pop (); // выталкивает из стека символГлава 1, Краткий обзор C++II Инициализация стекаvoid stack::init()tos=0;\I/ Помещение символа в стекvoid stack::push(char ch}if (tos=SIZE) {cout « "Стек полон";return;Jstckftos] = ch;tOS++;'// Выталкивание символа из стекаchar stack::pop()if (tos==Q) {cout « "Стек пуст";return 0; // возврат нуля при пустом стеке}tos—;return stck[tos];int main(}stack si, s2; // создание двух стековint i;// инициализация стековsi.init ();s2.init () ;si.push ('a');s2.push f'x'};si.push('b');s2.push('y1);si.push ('c');s2.push ('z1);for(i=0;i<3;i++) cout « "символ из si:" « sl.popO « "\n";for(i=0;i<3; i++) cout « "символ из s2:" « s2.pop() « "\n";return 0;131_Самоучитель C++32Эта программа выводит на экран следующее:символсимволсимволсимволсимволсимволизизизизизизsisisiз2:s2:s2: хДавайте теперь детально проанализируем программу.

Класс stack содержитдве закрытые переменные: stck и tos. Массив stck содержит символы, фактически помещаемые в стек, a tos содержит индекс вершины стека. Открытымифункциями стека являются init(), pushQ и рор(), которые, соответственно,инициализируют стек, помещают символ в стек и выталкивают его из стека.Внутри функции пlain() создаются два стека, si и s2, и по три символа помещаются в каждый из них. Важно понимать, что один объект (стек) не зависит от другого. Поэтому у символов в si нет способа влиять на символы вs2.

Каждый объект содержит свою собственную копию stck и tos. Это фундаментальная для понимания объектов концепция. Хотя все объекты классаимеют общие функции-члены, каждый объект создает и поддерживает своисобственные данные.1. Введите и выполните программы, приведенные в этом разделе, если это ещене сделано.2. Создайте класс card, который поддерживает каталог библиотечных карточек.Этот класс должен хранить заглавие книги, имя автора и выданное на рукичисло экземпляров книги.

Заглавие и имя автора храните в виде строки символов, а количество экземпляров — в виде целого числа. Используйте открытую функцию-член store() для запоминания информации о книгах и открытую функцию-член show() для вывода информации на экран. В функциюmain() включите краткую демонстрацию работы созданного класса.3. Создайте класс с циклической очередью целых. Сделайте очередь длиной 100целых. В функцию main() включите краткую демонстрацию ее работы.1.6.

Некоторые отличия языков С и C++У языка C++ есть ряд небольших отличий от С. Хотя каждое из этих отличий само по себе незначительно, вместе они достаточно распространены впрограммах C++. Поэтому перед тем как двинуться дальше, обсудим этиотличия.а Во-первых, если в С функция не имеет параметров, ее прототип содержит слово void в списке параметров функции. Например, если в С функ-Глава 1. Краткий обзор C++33_ция fl() не имеет параметров (и возвращает char), ее прототип будет выглядеть следующим образом:char f I ( v o i d ) ;.В C++ слово void не обязательно.

Поэтому в C++ прототип обычно пишется так:char f1() ;C++ отличается от С способом задания пустого списка параметров. Еслибы предыдущий прототип имел место в программе С, то это бы означало,что о параметрах функции сказать ничего нельзя. А в C++ это означает,что у функции нет параметров. Поэтому в предыдущих примерах для исчерпывающего обозначения пустого списка параметров слово void не использовалось. (Использование void для обозначения пустого списка параметров не ошибочно, скорее, оно излишне.

Поскольку большинствопрограммистов C++ гонятся за эффективностью с почти религиознымрвением, вы никогда не увидите void в таких случаях.) Запомните, в C++следующие два объявления эквивалентны:int f l ( ) ;int f 1 ( v o i d ) ;а Другим небольшим отличием между С и C++ является то, что в программах C++ все функции должны иметь прототипы. Запомните, в Спрототипы функций рекомендуются, но технически они не обязательны,а в C++ прототипы необходимы.

Как показывают примеры из предыдущего раздела, содержащийся в классе прототип функции-члена действует так же, как ее обычный прототип, и никакого иного прототипа нетребуется.Q Третьим отличием между С и C++ является то, что если в C++ функцияимеет отличный от void тип возвращаемого значения, то инструкцияreturn внутри этой функции должна содержать значение данного типа.В языке С функции с отличным от void типом возвращаемого значенияфактически не требуется возвращать что-либо. Если значения нет, тофункция возвращает неопределенное значение.В С, если тип возвращаемого функцией значения явно не задан, функцияпо умолчанию возвращает значение целого типа.

В C++ такого правиланет. Следовательно, необходимо явно объявлять тип возвращаемого значения всех функций.а Следующим отличием между С и C++ является то, что в программахC++ вы можете выбирать место для объявления локальных переменных.В С локальные переменные могут объявляться только в начале блока, перед любой инструкцией "действия". В C++ локальные переменные могут34Самоучитель C++объявляться в любом месте программы. Одним из преимуществ такогоподхода является то, что локальные переменные для предотвращения нежелательных побочных эффектов можно объявлять рядом с местом ихпервого использования.а И последнее.

Для хранения значений булева типа (истина или ложь) вC++ определен тип данных boot. В C++ также определены ключевыеслова true и false — единственные значения, которыми могут быть данные типа boot. В C++ результатом выполнения операторов отношения илогических операторов являются значения типа bool, и направление развития любой условной инструкции должно определяться относительнозначения типа bool.

Характеристики

Тип файла
PDF-файл
Размер
65,55 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее