Чтение онлайн

на главную - закладки

Жанры

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

Страустрап Бьярн

Шрифт:

Конструкция имя-простого-типа (§R.7.1.6), за которой следует список-выражений в скобках образует значение указанного типа с учетом списка выражений. Если список выражений содержит более одного значения, тип должен быть классом с конструктором, описанным соответствующим образом (§R.8.4, §R.12.1).

Конструкция имя-простого-типа (§R.7.1.6), за которой следует пара скобок (пустая), образует значение указанного типа. Если тип является классом с конструктором, описанным соответствующим образом, будет вызван этот конструктор, в противном случае результатом будет неопределенное значение указанного типа, см. так же (§R.5.4).

R.5.2.4

Доступ к члену класса

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

Постфиксное выражение, за которым следует стрелка (-›) и имя, является постфиксным выражением. Первое выражение должно быть указателем на объект типа класс, а имя должно быть именем члена этого класса. Результатом будет поименованный член объекта, на который настроен указатель и он будет адресом, если член является адресом. Значит выражение E1-›MOS тоже самое, что (*E1).MOS.

Обратите внимание, что "объекты типа класс" могут быть структурами (§R.9.2) или объединениями (§R.9.5). Классы обсуждаются в §R.9.

R.5.2.5 Инкремент и декремент

Значение, получаемое в результате применения постфиксной операции ++, есть значение операнда. Операнд должен быть изменяемым адресом. Тип операнда должен быть арифметический или тип указателя. После выборки результата (для дальнейшего использования) объект увеличивается на 1. Тип результата совпадает с типом операнда, но не является адресом (см. так же §R.5.7 и §R.5.17).

Постфиксная операция -- сводится к операции декремента (уменьшение на 1) и аналогична операции ++.

R.5.3 Унарные операции

Выражения с унарными операциями выполняются справа налево.

унарное-выражение:

 постфиксное-выражение

 ++ унарное выражение

 -- унарное выражение

 унарная-операция выражение-приведения

 sizeof унарная-операция

 sizeof (имя-типа)

 выражение-размещения

 выражение-освобождения

унарная-операция: один из

 * & + - ! ~

Унарная операция * означает косвенность: выражение должно быть указателем, а результат является адресом, ссылающимся на объект, на который указывает выражение. Если тип выражения есть "указатель на T", то тип результата будет "T".

Результатом унарной операции & будет указатель на ее операнд. Операнд должен быть функцией или адресом или конструкцией уточненное-имя. Для первых двух случаев, если тип выражения есть "T", то тип результата будет "указатель на T". В частности, адрес объекта типа const T имеет тип const T*, тоже верно для volatile. Для случая уточненное имя если член класса "C" не является статическим и имеет тип "T", то тип результата операции будет "указатель на член C типа T". Для статических членов типа T результатом будет обычный "указатель на T". Адрес перегруженной функции (§R.13)

можно брать только при инициализации или присваивании, в котором левая часть однозначно определяет какая версия перегруженной функции имеется ввиду ($R13.3).

Операнд унарной операции + должен быть арифметического типа или типа указатель и результатом будет значение операнда. Для целочисленных операндов производится стандартное преобразование целочисленных. Тип результата есть тип преобразованного операнда.

Операнд унарной операции - должен иметь арифметический тип и результатом будет изменение знака операнда. Для целочисленных операндов выполняется стандартное преобразование целочисленных.

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

Операнд операции логического отрицания ! должен иметь арифметический тип или быть указателем, результат равен 1, если значение операнда есть 0, и равен 0, если операнд не равен 0. Тип результата есть int.

Операнд операции ~ должен иметь целочисленный тип, результатом будет обращение двоичного представления операнда. Выполняются стандартные преобразования целочисленных. Тип результата есть тип преобразованного операнда.

R.5.3.1 Инкремент и декремент

Операнд префиксной операции ++ увеличивается на 1. Операнд должен быть изменяемым адресом. Тип операнда должен быть арифметическим или указателем. Результатом является новое значение операнда, оно считается адресом. Выражение ++x эквивалентно x+=1. Для уточнения преобразований можно обратиться к описанию сложения (§R.5.7) и операций присваивания (§R.5.17).

Префиксная операция -- сводится к уменьшению на 1 и выполняется аналогично префиксной операции ++.

R.5.3.2 Операция sizeof

Операция sizeof вычисляет размер своего операнда в байтах. Операнд должен быть или выражением, которое не вычисляется, или именем типа в скобках. Операцию sizeof нельзя применять к функции, битовому полю, неопределенному классу, типу void или к массиву с неуказанными границами индексов. Байт никак не определяется языком, кроме как результата операции sizeof, именно sizeof(char) есть 1.

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

Операция sizeof может применяться к указателю на функцию, но не к самой функции.

Результатом операции будет константа типа size_t. Этот тип определен в стандартном заголовочном файле ‹stddef.h› и является зависящим от реализации беззнаковым целочисленным типом.

R.5.3.3 Операция new

Операция new предназначена для создания объекта типа имя-типа (§R.8.1). Этот тип должен быть типом объекта и функции нельзя размещать с ее помощью, хотя указатели на функции можно.

Поделиться:
Популярные книги

Наследник Четырех

Вяч Павел
5. Игра топа
Фантастика:
героическая фантастика
рпг
6.75
рейтинг книги
Наследник Четырех

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7

Приручитель женщин-монстров. Том 1

Дорничев Дмитрий
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1

Лорд Системы 4

Токсик Саша
4. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 4

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

6 Секретов мисс Недотроги

Суббота Светлана
2. Мисс Недотрога
Любовные романы:
любовно-фантастические романы
эро литература
7.34
рейтинг книги
6 Секретов мисс Недотроги

Неудержимый. Книга XIII

Боярский Андрей
13. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIII

Вернуть невесту. Ловушка для попаданки

Ардова Алиса
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
Вернуть невесту. Ловушка для попаданки

На руинах Мальрока

Каменистый Артем
2. Девятый
Фантастика:
боевая фантастика
9.02
рейтинг книги
На руинах Мальрока

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Табу на вожделение. Мечта профессора

Сладкова Людмила Викторовна
4. Яд первой любви
Любовные романы:
современные любовные романы
5.58
рейтинг книги
Табу на вожделение. Мечта профессора