Учись программированию на C++ Builder бесплатно!

В С++ определен ряд операций присваивания.

Обозначение Операция Типы операндов и результата Пример
= присваивание любые 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 копирует содержимое одного объекта в другой. Таким образом в памяти будет иметься два объекта А и В одинакового содержания. А оператор присваивания, примененный к указателям (имя объекта - это указатель на объект), присваивает указателю А значение указателя В. Таким образом, и А, и В будут указывать на один и тот же объект в памяти. А тот объект, на который до выполнения этого оператора указывал А, может быть вообще потерян, если в программе где-то не хранится другой указатель на него.


Поиск по сайту