class ctr { 
C++
public: ctr(int i = 0, char* x = "ctr") { n = i; strcpy(s,x); } ctr& operator++(int) { n++; return *this; } int operator()() { return n; } operator int() { return n; } operator char*() { return s; } private: int n; char s[64]; };

Usage

  ctr c; cout << (char*) c++ << "=" << c();
  

slide: C++ - techniques (2)