Главная->Інформатика та програмування->Содержание->Перегрузка унарных операций

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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. В этом примере мы использовали префиксную версию операции ++, постфиксную мы объясним позднее.

 

3