Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

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

CuBook25

В С++ определен ряд операций присваивания.
Обозначение Операция Типы операндов и результата Пример
= присваивание любые X = Y
+= присваивание со сложением арифметические, указатели, структуры, объединения X += Y
-= присваивание с вычитанием арифметические, указатели, структуры, объединения X -= Y
*= присваивание с умножением арифметические X *= Y
/= присваивание с делением арифметические X /= Y
% = присваивание остатка целочисленного деления целые X %= Y
<<= присваивание со сдвигом влево целые X <<= Y
>>= присваивание со сдвигом вправо целые X >>= Y
&= присваивание с поразрядной операцией И целые X &= Y
^= присваивание с поразрядной операцией исключающее ИЛИ целые X ^= Y
|= присваивание с поразрядной операцией ИЛИ целые X |= Y
 
Помимо простой операции присваивания (=) все прочие являются составными операциями. Они присваивают первому операнду результат применения соответствующей простой операции, указанной перед символом "=", к первому и второму операндам.
 
Например, выражение X += Y эквивалентно выражению X = X + Y, но записывается компактнее и может выполняться быстрее. Аналогично определяются и другие операции присваивания: X %= Y эквивалентно X = X % Y и т.д.
 
При записи составных операций присваивания между символом операции и знаком равенства пробел не допускается.
 
В операциях присваивания первый операнд не может быть нулевым указателям.
Операции присваивания возвращают как результат присвоенное значение. Благодаря этому они допускают сцепление. Например, вы можете написать:
А = (В = С = 1) +1;
Выполняются операции присваивания справа налево. Поэтому приведенное выражение задаст переменным В и С значения 1, а переменной А - 2. Вычисляться это будет следующим образом. Сначала выполняются операции, заключенные в скобки, а из них первой - самая правая (т.е. С = 1). Эта операция вернет 1, так что далее будет выполнена операция В = 1. Она вернет значение 1, после чего выполнится операция сложения 1 + 1. Полученное в результате значение 2 присвоится переменной А.
 
Применительно к указателям на объекты надо четко представлять различие между оператором присваивания и методом копирования Assign, свойственным многим классам объектов. Метод Assign используется следующим образом:
объект_приемник->Assign(объект_источник);
Например:
A->Assign(В);
Этот оператор копирует содержание объекта В (все его свойства) в объект А. Для тех же самых объектов А и В можно записать оператор присваивания:
А = В;
Различие между двумя приведенными операторами следующее. Метод Assign копирует содержимое одного объекта в другой. Таким образом в памяти будет иметься два объекта А и В одинакового содержания. А оператор присваивания, примененный к указателям (имя объекта - это указатель на объект), присваивает указателю А значение указателя В. Таким образом, и А, и В будут указывать на один и тот же объект в памяти. А тот объект, на который до выполнения этого оператора указывал А, может быть вообще потерян, если в программе где-то не хранится другой указатель на него.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий