396 __ __ _____Часть III. Современное программирование на C++

Для не членов класса развернутая форма операции выглядит по-другому:

operator a ( х);

Теперь посмотрим, как произвольная одноместная операция а будет выглядеть в контексте:

х = ах; // вместо а может стоять !, -, ~ и т. п.

Есть две унарных операции, требующих дополнительного внимания: это операции ++ (инкремент) и — (декремент). Обе они имеют префиксную (перед объектом) и постфиксную (после объекта) версии. Пока дело не касается перегрузки, в этих операциях нет ничего особенного.

Инкремент и декремент

Функции operator++ и operator— используются для увеличения и уменьшения на единицу базовых перечислимых типов. Применение ++ к символам, целым, длинным целым и указателям увеличивает переменную на единицу, что эквивалентно х = х + 1, где х — один из названных типов. Декремент работает точно так же, только вычитает единицу, а не прибавляет.

Постфиксные и префиксные инкремент и декремент

Операции ++ и — имеют префиксную (перед объектом) и постфиксную (после объекта) формы. Использование префиксной операции (и той, и другой) означает, что объект должен быть модифицирован до его использования. Постфиксная нотация, напротив, означает, что объект будет изменен после его использования.

Рассмотрим целочисленную переменную, необходимую как условие окончания цикла while. Например:

int num = 0;

// печатаются числа от 1 до 9 while ( ++num < 10)

cout « num « endl;

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

// печатаются числа от 1 до 10 while ( num++ < 10) cout « пил! « endl;

переменная num будет увеличиваться на единицу после сравнения с ю.