class counter {
  public:
  
  counter(int v = 0 ) : n(v), id("default") { }
  counter( char* s, int v = 0 );
  	
  ~counter() { delete[] id; }
  	
  const char* name() { return id; }
  
  void operator++() { n = n + 1; }
  
  operator int() { return n; }
  operator char*() { return id; }
  
  private:
  int n; char* id;
  };
  

slide: Widening and narrowing conversions