LibKing » Книги » comp-programming » Бьярн Страустрап - Справочное руководство по C++

Бьярн Страустрап - Справочное руководство по C++

Тут можно читать онлайн Бьярн Страустрап - Справочное руководство по C++ - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
libking
  • Название:
    Справочное руководство по C++
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

Бьярн Страустрап - Справочное руководство по C++ краткое содержание

Справочное руководство по C++ - описание и краткое содержание, автор Бьярн Страустрап, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Справочное руководство по C++ - читать онлайн бесплатно полную версию (весь текст целиком)

Справочное руководство по C++ - читать книгу онлайн бесплатно, автор Бьярн Страустрап
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Инициализация нелокальных статических объектов (§R.3.5) единицы трансляции происходит прежде первого обращения к функции или объекту, определенному в этой единице трансляции. Эта инициализация (§R.8.4, §R.9.4, §R.12.1, §R.12.6.1) может быть проведена перед выполнением первого оператора main() или отложена до любого момента, предшествующего первому использованию функции или объекта, определенных в данной единице трансляции. Все статические объекты по умолчанию инициализируются нулем (§R.8.4) прежде любой динамической (во времени выполнения программы) инициализации. Больше никаких требований на порядок инициализации объектов из различных единиц трансляции не налагается. Инициализация локальных и статических объектов описана в §R.8.4.

Деструкторы (§R.12.4) для инициализированных статических объектов вызываются при возврате из main() или при вызове exit().

Уничтожение происходит в обратном порядке по сравнению с инициализацией. С помощью функции atexit() из ‹stdlib.h› можно указать функцию, которую нужно вызывать при выходе из программы. Если было обращение к функции atexit(), объекты, инициализированные до вызова atexit(), не должны уничтожаться до тех пор, пока не произойдет вызов функции, указанной в atexit(). Если реализация C++ сосуществует с реализацией С, все действия, которые должны были произойти после вызова функции, заданной в atexit(), происходят только после вызова всех деструкторов.

Вызов функции

void abort();

описанной в ‹stdlib.h›, завершает программу без выполнения деструкторов статических объектов и без вызова функций, заданных в atexit().

R.3.5 Классы памяти

Существует два описываемых класса памяти: автоматический и статический.

Автоматические объекты становятся локальными при передаче управления в каждый блок.

Статические объекты существуют и сохраняют свое значение во все время выполнения программы.

Автоматические объекты инициализируются (§R.12.1) всякий раз, когда управление переходит в блок, где они определены и уничтожаются (§R.12.4) по выходе из этого блока (§R.6.7).

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

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

Статические объекты инициализируются и уничтожаются в соответствии с описанием в §R.3.4 и §R.6.7. С некоторыми объектами не связано никакого имени, см. §R.5.3.3 и §R.12.2. Все глобальные объекты имеют класс памяти статический. Локальным объектам и членам класса можно предать класс памяти статический с помощью явного использования спецификации класса памяти static (§R.7.1.1).

R.3.6 Типы

Существуют два вида типов: основные и производные.

R.3.6.1 Основные типы

Существует несколько основных типов. В стандартном заголовочном файле ‹limits.h› задаются в зависимости от реализации минимальные и максимальные значения каждого типа.

Объекты, описанные как символы (char), могут хранить любой элемент из базового набора символов данной машины. Если символ этого набора хранится в символьной переменной, то ее значение равно целому значению кода этого символа. Символы могут явно описываться как unsigned или signed. Обычный char, signed char и unsigned char являются тремя различными типами. Для всех этих трех типов требуется одинаковый объем памяти.

С помощью описаний short int, int и long int можно определить целые трех различных размеров. Для длинных целых требуется памяти не меньше чем для коротких целых, но в реализации или короткие целые, или длинные целые, или и те и другие могут оказаться эквивалентными обычным целым. Обычные целые имеют размер, определяемый системой команд, размеры других целых определяются конкретными потребностями.

Для каждого из типов signed char, short, int и long существует соответствующий беззнаковый тип, который занимает тот же объем памяти и удовлетворяет тем же требованиям выравнивания. Требование выравнивание - это ограничение на значение указателя на данный объект, которое накладывает реализация (§R.5.4).

Беззнаковые целые, описанные как unsigned, подчиняются законом арифметики по модулю 2 n, где n число битов, используемое для представления значения. Отсюда следует, что в арифметике беззнаковых не возникает переполнения.

Существует три типа с плавающей точкой: float, double и long double. Тип double гарантирует не меньшую точность представления, чем float, а тип long double гарантирует точность не меньше, чем у double. Характеристики основных типов с плавающей точкой определяются в соответствии с реализацией в стандартном заголовочном файле ‹float.h›.

Типы char, int любых размеров и тип перечисления (§R.7.2) называются целочисленными типами. Целочисленные типы вместе с типами с плавающей точкой образуют арифметические типы.

Тип void задает пустое множество значений. Он используется для обозначения типа функций, которые не возвращают результат. Нельзя описывать объекты с типом void. Любое выражение можно явно преобразовать к типу void (§R.5.4), получившееся выражение можно использовать только как выражение-оператор (§R.6.2), как левый операнд операции запятая (§R.5.18) или в качестве второго или третьего операнда в операции ?: (§R.5.16).

R.3.6.2 Производные типы

Существует потенциально бесконечное число производных типов, которые строятся из основных типов следующими способами:

массив объектов данного типа, §R.8.4;

функции, имеющие параметры данного типа и возвращающие объекты данного типа, §R.8.2.5;

указатели на объекты или функции данного типа, §R.8.2.1;

ссылки на объекты или функции данного типа, §R.8.2.2;

константы, являющиеся значениями данного типа, §R.7.1.6;

классы, содержащие совокупность объектов различных типов (§R.9), набор функций для управления этими объектами (§R.9.3) и и список ограничений на доступ к этим объектам и функциям, §R.11;

структуры, которые являются классами без стандартных ограничений на доступ, $$r.11;

объединения, которые являются структурами, способными содержать в разное время объекты различных типов, §R.9.5;

указатели на члены классов, которые задают члены данного типа среди всех объектов данного класса, §R.8.2.3.

В общем случае указанные методы построения объектов могут применяться рекурсивно, ограничения приведены в $$r.8.2.1, §R.8.2.4, §R.8.2.5 и §R.8.2.2.

Про указатель на объекты типа T говорят "указатель на на T". Например, про указатель на объект типа int говорят "указатель на int", а указатель на объект класса X называется "указатель на X".

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Бьярн Страустрап читать все книги автора по порядку

Бьярн Страустрап - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Справочное руководство по C++ отзывы


Отзывы читателей о книге Справочное руководство по C++, автор: Бьярн Страустрап. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img