C++ - Страустрап Бьярн, Хилл Мюррей
-
Название:C++
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Страниц:161
-
Рейтинг:
-
Ваша оценка:
Основным термином С++ является класс. Класс – это вид, который определяет сам пользователь. Классы обеспечивают анонимность данных, обеспеченную инициализацию информации, смутное преобразование видов для видов, определенных эксплуатантом, меняющееся задание вида, управляемые пользователем контроль над памятью и механизмы перезагрузки процессов. С++ предоставляет более качественные, чем в C, средства выражения модульного принципа программы и проверки видов. В языке также присутствуют апгрейды, не связанные напрямую с классами, включающие в себя символические постоянные, параметры функции по умолчанию, inline-подстановку функций, операции управления свободной памятью и ссылочный тип, перезагруженные имена функций. В С++ сохранены потенциалы языка C по работе с заглавными предметами машинного обеспечения (байты, биты, адреса, слова и т.п.). Это дает шанс весьма продуктивно воспроизводить виды, определяемые эксплуатантом.
С++ и его библиотеки установленные по умолчанию спроектированы так, чтобы гарантировать переносимость. Имеющееся на данный временной отрезок воспроизводство языка будет идти в большинстве систем, которые в состоянии поддерживать C. Из С++ программ возможно прибегать к пользованию C библиотеки, и с С++ возможно прибегать к пользованию большей части инструментальных средств, поддерживающих программирование на C.
Эта книга рассчитана в первую очередь для того, чтобы оказать помощь опытным программистам изучить язык и применять его в нестандартных проектах. В ней дано полное описание С++, множество фрагментов программ и примеров.
C++ - Страустрап Бьярн, Хилл Мюррей читать онлайн бесплатно полную версию книги
Такая функция полагается на информацию, которая недотупна компилятору при интерпретации ее списка параметров. В случае printf() первым параметром является строка формата, содержащая специальные последовательности символов, позволящие printf() правильно обрабатывать остальные параметры. %s означает «жди параметра char*», а %d означает «жди параметра int». Однако, компилятор этого не знает, поэтому он не может убедиться в том, что ожидаемые параметры имеют соответствущий тип. Например: printf(«Мое имя %s %s\n»,2);
откомпилируется и в лучшем случае приведет к какой-нбудь странного вида выдаче. Очевиднще хуже, каждый вызов функции с автоматическим объектом класса включает по меньшей мере один вызов программ выделения и освобождения свободной памяти. Это сделало бы также невозможным реализацию inline-функций членов, которые обращаются к данным закрытой части. Более того, такое изменение сделает невозможным совместную компоновку C и С++ программ (поскольку C компилятор обрабатывает struct не так, как это будет делать С++ компилятор). Для С++ это было сочтено неприемлемым.
Глава 5
Классы
Эти типы не «абстрактны», они столь же реальны, как int и float
Дуг МакИлрой
В этой главе описываются возможности определения новых типов в С++, для которых доступ к данным ограничен заданным множеством функций доступа. Объясняются способы защиты струтуры данных, ее инициализации, доступа к ней и, наконец, ее уничтожения. Примеры содержат простые классы для работы с таблицей имен, манипуляции стеком, работу с множеством и релизацию дискриминирующего (то есть, «надежного») объединения. Две следующие главы дополнят описание возможностей определния новых типов в С++ и познакомят читателя еще с некоторыми интересными примерами.
5.1 Знакомство и краткий обзор
Предназначение понятия класса, которому посвящены эта и две последующие главы, состоит в том, чтобы предоставить программисту инструмент для создания новых типов, столь же удобных в обращении сколь и встроенные типы. В идеале тип оределяемый пользователем, способом использования должен отлчаться от встроенных типов, только способом создания.
Тип есть конкретное представление некоторой концепции (понятия). Например, имеющийся в С++ тип float с его операцями +, -, * и т.д. обеспечивает ограниченную, но конкретную версию математического понятия действительного числа. Новый тип создается для того, чтобы дать специальное и конкретное определение понятия, которому ничто прямо и очевидно среди встроенных типов не отвечает. Например, в программе, которая работает с телефоном, можно было бы создать тип trunk_module (элемент линии), а в программе обработки текстов – тип list_of_paragraphs (список параграфов). Как правило, програму, в которой создаются типы, хорошо отвечающие понятиям прложения, понять легче, чем программу, в которой это не делется. Хорошо выбранные типы, определяемые пользователем, делают программу более четкой и короткой. Это также позволяет компилятору обнаруживать недопустимые использования объектов, которые в противном случае останутся необнаруженными до тетирования программы.
В определении нового типа основная идея – отделить несщественные подробности реализации (например, формат данных, которые используются для хранения объекта типа) от тех кчеств, которые существенны для его правильного использования (например, полный список функций, которые имеют доступ к даным). Такое разделение можно описать так, что работа со структурой данных и внутренними административными подпрограмами осуществляется через специальный интерфейс (канализирется).
Эта глава состоит из четырех практически отдельных чатей: