Что такое выражение?

Выражение состоит из одного или более операндов, в простейшем случае – из одного литерала или объекта. Результатом такого выражения является r-значение его операнда. Например:

Результатом вычисления выражения 3.14159 станет 3.14159 типа double, выражения «melancholia» – адрес первого элемента строки типа const char*. Значение выражения upperBound – это значение объекта upperBound, а его типом будет тип самого объекта. Более общим случаем выражения является один или…

Типы классов

Механизм классов позволяет создавать новые типы данных; с его помощью введены типы string, vector, complex и pair, рассмотренные выше. В предыдущей главе мы рассказывали о концепциях и механизмах, поддерживающих объектный и объектно-ориентированный подход, на примере реализации класса Array. Здесь мы, основываясь на объектном подходе, создадим простой класс String, реализация которого поможет понять, в частности, перегрузку операций. Мы дали краткое описание класса для того, чтобы приводить более…

Класс pair

Класс pair (пара) стандартной библиотеки С++ позволяет нам определить одним объектом пару значений, если между ними есть какая-либо семантическая связь. Эти значения могут быть одинакового или разного типа. Для использования данного класса необходимо включить заголовочный файл:

Например, инструкция:

создает объект author типа pair, состоящий из двух строковых значений. Отдельные части пары могут быть получены с помощью членов first и second:

Если нужно…

Спецификатор volatile

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

display_register – неустойчивый объект типа int. curr_task – указатель на неустойчивый объект класса Task. ixa – неустойчивый массив целых, причем каждый…

Директива typedef

Директива typedef позволяет задать синоним для встроенного либо пользовательского типа данных. Например:

Имена, определенные с помощью директивы typedef, можно использовать точно так же, как спецификаторы типов:

Эта директива начинается с ключевого слова typedef, за которым идет спецификатор типа, и заканчивается идентификатором, который становится синонимом для указанного типа. Для чего используются имена, определенные с помощью директивы typedef? Применяя мнемонические имена для типов данных, можно…

Класс complex

Класс комплексных чисел complex – еще один класс из стандартной библиотеки. Как обычно, для его использования нужно включить заголовочный файл:

Комплексное число состоит из двух частей – вещественной и мнимой. Мнимая часть представляет собой квадратный корень из отрицательного числа. Комплексное число принято записывать в виде:

где 2 – действительная часть, а 3i – мнимая. Вот примеры определений объектов типа complex:

Поскольку complex,…

Класс vector

Использование класса vector является альтернативой применению встроенных массивов. Этот класс предоставляет гораздо больше возможностей, поэтому его использование предпочтительней. Однако встречаются ситуации, когда не обойтись без массивов встроенного типа. Одна из таких ситуаций – обработка передаваемых программе параметров командной строки. Класс vector, как и класс string, является частью стандартной библиотеки С++. Для использования вектора необходимо включить заголовочный файл:

Существуют два абсолютно разных подхода к использованию…