class counter {
  friend int operator<(counter&, int);
  public:
  
  counter(int v = 0 );
  counter( char* s, int v = 0 );
  	
  ~counter() { delete[] id; }
  	
  const char* name() { return id; }
  int value() const { return n; }
  
  void operator++() { n = n + 1; }
  
  private: int n; char* id;
  void init(char* s);
  };
  
  int operator<(counter& c, int i) { return c.n < i; }
  

slide: Overloading and friends