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 будет увеличиваться на единицу после сравнения с ю.