Архив за ‘C++. Бархатный путь’ Category

C++. Бархатный путь Выражение

Выражение ::= ВыражениеПрисваивания
::= Выражение , ВыражениеПрисваивания

В контексте, где запятая выступает в роли разделителя, например, списке параметров вызова функции или в списке инициализации, запятая как знак операции может появиться только в круглых скобках:
MyFun(a, (w = 5, w + 9), c)

/* Выражение вызова функции с тремя параметрами. Значение второго параметра
задаётся выражением, значение которого равно 14. */
(далее…)

Выражение и l-выражение

Доступ к объектам и функциям обеспечивается выражениями, которые в этом случае ссылаются на объекты.
Выражение, которое обеспечивает ссылку на константу, переменную или функцию, называется l-выражением. Имя объекта в C++ является частным случаем l-выражения.

В C++ допускается изменение значений переменных. Значения констант и функций в C++ изменению не подлежат. l-выражение называется модифицируемым l-выражением, либо леводопустимым выражением, если только оно не ссылается на функцию, массив или константу. Таким образом, леводопустимыми выражениями называют l-выражения, которые ссылаются на переменные.
(далее…)

Тип связывания или тип компоновки

Тип связывания или тип компоновки определяет соответствие имени объекту или функции в программе, исходный текст которой располагается в нескольких модулях. Различают статическое и динамическое связывание.
Статическое связывание бывает внешним или внутренним. Оно обеспечивается на стадии формирования исполнительного модуля, ещё до этапа выполнения программы.

Если объект локализован в одном модуле, то используется внутреннее связывание. Тип компоновки специальным образом не обозначается, а определяется компилятором по контексту, местоположению объявлений и использованию спецификаторов класса памяти.
(далее…)

Пространство имён

С понятием области действия имени связано понятие пространства имени.
Пространством имени называется область программы, в пределах которой это имя должно быть уникальным.

Различные категории имён имеют различные пространства имён. К их числу относятся:

Пространство имён глобальных объектов. Это пространство образуется множеством образующих программу программных модулей. Имена глобальных объектов должны быть уникальны среди множества имён глобальных объектов во всех модулях, образующих программу.
(далее…)

Класс памяти

Класс памяти определяет порядок размещения объекта в памяти. Различают автоматический и статический классы памяти. C++ располагает четырьмя спецификаторами класса памяти:
auto
register
static
extern

по два для обозначения принадлежности к автоматическому и статическому классам памяти.
В свою очередь, статический класс памяти может быть локальным (внутренним) или глобальным (внешним).
(далее…)

Элементы программного модуля

Мы переходим к описанию синтаксиса элементов программного модуля, но, прежде всего, определим ещё одну категорию спецификаторов объявления.

СпецификаторОбъявления ::= fctСпецификатор
::= *****
fctСпецификатор ::= inline
::= virtual
fctСпецификатор используется при объявлении и определении функций. Их назначение ещё будет обсуждаться в дальнейшем. (далее…)

Комментарии: возможность выразиться неформально

Язык программирования C++, как и любой формальный язык непривычен для восприятия и в силу этого в ряде случаев может быть тяжёл для понимания. В C++ предусмотрены дополнительные возможности для облегчения восприятия текстов программ. Для этого используются комментарии.

Комментарии — это любые последовательности символов алфавита C++, заключённые в специальные символы. Эти символы называются символами — комментариями. Существуют две группы символов — комментариев. К первой группе относятся парные двухбуквенные символы /* и */.
(далее…)

Рекомендации по наименованию объектов

Имена — это идентификаторы. Любая случайным образом составленная последовательность букв, цифр и знаков подчёркивания с точки зрения грамматики языка идеально подходит на роль имени любого объекта, если только она начинающаяся с буквы.

Фрагмент программы, содержащий подобную переменную, будет синтаксически безупречен.
(далее…)

Объявление переменных

Мы приступаем к изучению синтаксиса операторов C++. В языке различают несколько типов операторов. Каждый из них выполняет в программе строго определённые функции.

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

К характеристикам объекта относятся тип объекта, класс памяти, время жизни объекта, множество других свойств, представляемых различными модификаторами.
(далее…)

Основные типы C++

Основные типы в C++ подразделяются на две группы: целочисленные типы и типы с плавающей точкой (для краткости их будем называть плавающими типами). Это арифметические типы.

В C++ нет жёсткого стандарта на диапазоны значений арифметических типов (в стандарте языка оговариваются лишь минимально допустимые значения). В принципе, эти диапазоны определяются конкретной реализацией. Обычно выбор этих характеристик диктуется эффективностью использования вычислительных возможностей компьютера. Зависимость языка от реализации создаёт определённые проблемы переносимости. C++ остаётся машинно-зависимым языком.
(далее…)