Читаем Справочное руководство по C++ полностью

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

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

void abort();

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

<p>R.3.5 Классы памяти</p>

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

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

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

Автоматические объекты инициализируются (§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).

<p>R.3.6 Типы</p>

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

<p>R.3.6.1 Основные типы</p>

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

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

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

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

Беззнаковые целые, описанные как unsigned, подчиняются законом арифметики по модулю 2n, где 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).

<p>R.3.6.2 Производные типы</p>

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

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

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

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

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

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных