В програмі 10.2 ми створили тимчасовий об’єкт temp типу Counter, чиєю єдиною метою було збереження значення, яке повертає операція ++. Реалізація цього об’єкту вимагала трьох рядків програми
Counter temp;
temp.count=count;
return temp;
Існує багато способів повертати тимчасовий об’єкт з функції чи перезавантаженої операції. Розглянемо ще один спосіб в програмі 10.3
#include <iostream.h>
#include <conio.h>
#include <bios.h>
class Counter
{private:
unsigned int count;
public:
Counter():count(0) //constructor
{ };
Counter(int c):count(c)
{}
unsigned int get_count()
{return count;}
Counter operator++()
{++count;
return Counter(count);
}
};
int main()
{
clrscr();
Counter c1,c2;
cout << "\nc1="<<c1.get_count();
cout <<"\nc2="<<c2.get_count();
++c1;
c2=++c1;
cout << "\nc1="<<c1.get_count();
cout <<"\nc2="<<c2.get_count();
cout <<endl;
bioskey(0);
return 0;
}
Програма 10.3
В рядку цієї програми
return Counter(count);
відбуваються ті самі дії, які в програмі 10.2 займали три рядки. Тут створюється об’єкт типу Counter. Він не має імені, бо воно ніде не використовуватиметься. Цей об’єкт ініціалізується значенням, одержаним у вигляді параметра count.
Зверніть увагу, що, порівняно з попередньою програмою, додався конструктор з одним параметром
Counter(int c):count(c)
{}
Об’єкт, ініціалізований значенням count, може бути повернутий функцією. Результат цієї програми такий же, як і попередньої..