#include <iostream>
using namespace std;
class Shape {
public:
virtual void virtualfunc() { std::cout << "In shape\n"; }
};
class Circle: public Shape {
public:
void virtualfunc() { std::cout << "In Circle\n"; };
};
int main() {
Shape shape_instance;
Circle circle_instance;
Shape& ref_shape = shape_instance;
ref_shape = circle_instance;
ref_shape.virtualfunc();
Shape& ref2 = circle_instance;
ref2.virtualfunc();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNsYXNzIFNoYXBlIHsKcHVibGljOgogICB2aXJ0dWFsIHZvaWQgdmlydHVhbGZ1bmMoKSAgeyBzdGQ6OmNvdXQgPDwgIkluIHNoYXBlXG4iOyB9Cn07CiAKY2xhc3MgQ2lyY2xlOiBwdWJsaWMgU2hhcGUgewpwdWJsaWM6CiAgIHZvaWQgdmlydHVhbGZ1bmMoKSAgeyBzdGQ6OmNvdXQgPDwgIkluIENpcmNsZVxuIjsgfTsKfTsKIAppbnQgbWFpbigpIHsKICAgU2hhcGUgc2hhcGVfaW5zdGFuY2U7CiAgIENpcmNsZSBjaXJjbGVfaW5zdGFuY2U7CgogICBTaGFwZSYgcmVmX3NoYXBlID0gc2hhcGVfaW5zdGFuY2U7CiAgIHJlZl9zaGFwZSA9IGNpcmNsZV9pbnN0YW5jZTsKICAgcmVmX3NoYXBlLnZpcnR1YWxmdW5jKCk7CgogICBTaGFwZSYgcmVmMiA9IGNpcmNsZV9pbnN0YW5jZTsKICAgcmVmMi52aXJ0dWFsZnVuYygpOwp9Cg==