Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 35 36 37 [ 38 ] 39 40 41 ... 210


Операции присваивания

Есть много операций присваивания, все группируют слева направо. Все в качестве левого операнда требуют lvalue, и тип выражения присваивания тот же, что и у его левого операнда. Это lvalue не может ссылаться на константу (имя массива, имя функции или const).

Значением является значение, хранящееся в левом операнде после выполнения присваивания.

Синтаксис:

выражение операция присваивания выражение Где операция присваивания - одна из:

>>=

<<=

&=

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

Если аргумент в левой части имеет указательный тип, аргумент в правой части должен быть того же типа или типа, который может быть преобразован к нему.

Оба операнда могут быть объектами одного класса. Могут присваиваться объекты некоторых производных классов.

Присваивание объекту типа указатель на ... выполнит присваивание объекту, денотируемому ссылкой.



Выполнение выражения вида E1 op= E2 можно представить себе как эквивалентное E1 = E1 op (E2); но E1 вычисляется только один раз.

В += и -= левый операнд может быть указателем, и в этом случае (интегральный) правый операнд преобразуется так, как объяснялось выше; все правые операнды и не являющиеся указателями левые должны иметь арифметический тип.

Операция запятая

Синтаксис:

выражение , выражение

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

В контексте, где запятая имеет специальное значение, как например в списке фактических параметров функции и в списке инициализаторов, операция запятая, как она описана в этом разделе, может появляться только в скобках.

Например:

f (a,(t=3,t+2),c) имеет три параметра, вторым из котортх является значение 5.

Перегруженные операции

Большинство операций может быть перегружено, то есть, описано так, чтобы они получали в качестве операндов объекты классов. Изменить приоритет операций невозможно. Невозможно изменить смысл операций при применении их к неклассовым объектам.

Предопределенный смысл операций = и & (унарной) при применении их к объектам классов может быть изменен.

Эквивалентность операций, применяемых к основным типам (например, ++a эквивалентно a+=1), не обязательно выполняется для операций, применяемых к классовым типам. Некоторые операции, например, присваивание, в случае применения к основным типам требуют, чтобы операнд был lvalue; это не требуется для операций, описанных для классовтх типов.



Унарные операции

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

Так, дя любой унарной операции @, x@ и @x могут интерпретироваться как х.операция@() или операция@(х). При

перегрузке операций ++ и -- невозможно различить префиксное и постфиксное использование.

Бинарные операции

Бинарная операция может быть определена ии с помощью функции члена, получающей один параметр, или с помощью функции друга, получающей два параметра, но не двумя способами одновременно. Так, для любой бинарной операции @, x@y может быть проинтерпретировано как х.операция@(у) ии операция@(х,у).

Особые операции

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

первичное выражение (список выражений opt) и индексирование

первичное выражение [выражение] считаются бинарными операциями. Именами определяющей функции являются соответственно operator() и operator[]. Обращение x(arg) интерпретируется как x.operator()(arg) для классового объекта x. Индексирование x[y] интерпретируется как x.operator[](y).

Описания

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

спецификаторы описания opt список описателей opt;

описание имени

а8т описание



1 ... 35 36 37 [ 38 ] 39 40 41 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика