#include <iostream>
using namespace std;
class A
{
public:
virtual void foo() { cout << "A" << endl; }
};
class B : public A
{
public:
virtual void foo() { cout << "B" << endl; }
};
int main()
{
B b;
b.foo(); //--> B
A a = b;
a.foo(); //--> A
A& ra = b;
ra.foo(); //--> B
return 0x0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBmb28oKSB7IGNvdXQgPDwgIkEiIDw8IGVuZGw7IH0KfTsKCmNsYXNzIEIgOiBwdWJsaWMgQQp7CnB1YmxpYzoKCXZpcnR1YWwgdm9pZCBmb28oKSB7IGNvdXQgPDwgIkIiIDw8IGVuZGw7IH0KfTsKCmludCBtYWluKCkKewoJQiBiOwoJYi5mb28oKTsgLy8tLT4gQgoJCglBIGEgPSBiOwoJYS5mb28oKTsgLy8tLT4gQQoJCglBJiByYSA9IGI7CglyYS5mb28oKTsgLy8tLT4gQgoJCglyZXR1cm4gMHgwOwp9