ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 8) онлайн
Перегрузка унарных операций
Давайте начнем с перегрузки унарных операций. Как нам известно из главы 2, унарные операции имеют только один операнд (операнд — это переменная, на которую действует операция). Примером унарной операции могут служить опе- рации уменьшения и увеличения ++ и -- и унарный минус, например -33.
В примере COUNTER главы 6 «Объекты и классы» мы создали класс Counter для хранения значения счетчика. Объект этого класса мы увеличивали вызовом метода:
c1.inc_count ( );
Он выполнял свою работу, но листинг программы станет более понятным, если мы применим вместо этой записи операцию увеличения ++.
++c1;
Все опытные программисты C++ (и С) сразу догадаются, что это выражение увеличивает переменную c1.
Давайте перепишем программу COUNTER, чтобы сделать это действие возмож- ным. Приведем листинг программы COUNTPP1.
// countpp1.cpp
// увеличение переменной операцией ++ #include <iostream> using namespace std; ///////////////////////////////////////////////////////////
class Counter {
private:
unsigned int count; // значение счетчика
public:
Counter ( ) : count ( 0 ) // конструктор { }
unsigned int get_count ( ) // получить значение
{ return count; } void operator++ ( ) // увеличить значение
{ ++count; }
};
///////////////////////////////////////////////////////////
int main ( ) {
Counter c1, c2; // определяем переменные
cout << "\nc1 = " << c1.get_count ( ); // выводим на экран cout << "\nc2 = " << c2.get_count ( );
++c1; // увеличиваем c1
++c2; // увеличиваем c2
++c2; // увеличиваем c2
cout << "\nc1 = " << c1.get_count ( ); // снова показываем значения cout << "\nc2 = " << c2.get_count ( ) << endl;
return 0;
}
В этой программе мы создали два объекта класса Counter: c1 и c2. Значения счетчиков выведены на дисплей, сначала они равны 0. Затем, используя пере- грузку операции ++, мы увеличиваем c1 на единицу, а c2 на два и выводим полу- ченные значения. Результат работы программы:
c1 = 0 - изначально обе переменные равны нулю c2 = 0
c1 = 1 - после однократного увеличения
c2 = 2 - после двукратного увеличения
Выражения, соответствующие этим действиям:
++c1; ++c2; ++c2;
Операция ++ применена к c1 и дважды применена к c2. В этом примере мы использовали префиксную версию операции ++, постфиксную мы объясним позднее.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
