C++ Operator Overload Increment counter variable with ++ operator, uses unnamed temporary object

Description

C++ Operator Overload Increment counter variable with ++ operator, uses unnamed temporary object

#include <iostream>
using namespace std;
class Counter/*from  w  w w .j  a va2s .  c o  m*/
{
   private:
       unsigned int count;        //count
   public:
       Counter() : count(0)       //constructor  no args
       {  }
       Counter(int c) : count(c)  //constructor, one arg
       {  }
       int get_count()            //return count
       { return count; }
       Counter operator ++ ()     //increment count
       {
          ++count;                //increment count, then return
          return Counter(count);  //  an unnamed temporary object
       }                       //  initialized to this count
};
int main()
{
   Counter c1, c2;                       //c1=0, c2=0
   cout << "\nc1=" << c1.get_count();    //display
   cout << "\nc2=" << c2.get_count();
   ++c1;                                 //c1=1
   c2 = ++c1;                            //c1=2, c2=2
   cout << "\nc1=" << c1.get_count();    //display again
   cout << "\nc2=" << c2.get_count() << endl;
   return 0;
}



PreviousNext

Related