C++ Operator Overload ++ operator in both prefix and postfix

Description

C++ Operator Overload ++ operator in both prefix and postfix

#include <iostream>
using namespace std;
class Counter//from w  ww  .  j  a  v  a2 s.c  om
{
   private:
   unsigned int count;         //count
   public:
   Counter() : count(0)        //constructor  no args
   {  }
   Counter(int c) : count(c)   //constructor, one arg
   {  }
   unsigned int get_count() const //return count
   { return count; }
   Counter operator ++ ()      //increment count (prefix)
   {                        //increment count, then return
       return Counter(++count); //an unnamed temporary object
   }
    Counter operator ++ (int)   //increment count (postfix)
    {
       return Counter(count++);
    }
};
int main()
{
    Counter c1, c2;                       //c1=0, c2=0
    cout << "\nc1=" << c1.get_count();
    cout << "\nc2=" << c2.get_count();
    ++c1;                                 //c1=1
    c2 = ++c1;                            //c1=2, c2=2 (prefix)
    cout << "\nc1=" << c1.get_count();
    cout << "\nc2=" << c2.get_count();
    c2 = c1++;                            //c1=3, c2=2 (postfix)
    cout << "\nc1=" << c1.get_count();
    cout << "\nc2=" << c2.get_count() << endl;
    return 0;
}



PreviousNext

Related