#include <iostream>

class Foo {
 int x;
 friend void bar(Foo&);
public:
 explicit Foo(int x) : x(x) { }
 void foo() { std::cout << "mine's ex: " << x << std::endl; }
};

class Bar : public Foo {
public:
  Bar(int x) : Foo(x) {}
};

void bar(Foo& f) { f.x++; }

int main() {
  char z = 66;
  Bar *f = new Bar(z);
  f->foo();
  bar(*f);
  f->foo();
  return 0;
}
