#include <string>
#include <iostream>

using namespace std;

class counter
{
protected:
  int value;
  string name;

public:
  counter(string n)
  { value = 0;
    name = n;
    cout << "counter " << name << " initialised to zero\n"; }

  counter()
  { value = 0;
    name = "(anonymous)";
    cout << "counter " << name << " initialised to zero\n"; }

  int get_value()
  { return value; }

  void set_name(string n)
  { cout << name << " changed name to " << n << "\n";
    name = n; }

  void increment()
  { value += 1;
    cout << "counter " << name << " incremented to " << value << "\n"; }

  void decrement()
  { value -= 1;
    cout << "counter " << name << "  decremented to " << value << "\n"; }
};

int main()
{
  counter a("a"), b("belinda"), c("cat"), x;
  b.increment();
  b.increment();
  b.increment();
  b.increment();
  b.set_name("bert");
  a.increment();
  b.decrement();
  cout << "The final value of b is " << b.get_value() << "\n";
}