#include <iostream>
class A{
public:
virtual int DoSomething() {return 0;}
int f()
{
DoSomething();
return 0;
}
};
class B: public A
{
public:
int DoSomething() {
std::cout << "Hello World!" << std::endl;
return 0;
}
};
int main() {
A* a = new B;
a->f();
delete a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQXsKcHVibGljOgp2aXJ0dWFsIGludCBEb1NvbWV0aGluZygpIHtyZXR1cm4gMDt9CmludCBmKCkKewpEb1NvbWV0aGluZygpOwpyZXR1cm4gMDsKfQp9OwoKY2xhc3MgQjogcHVibGljIEEKewpwdWJsaWM6CmludCBEb1NvbWV0aGluZygpIHsKc3RkOjpjb3V0IDw8ICJIZWxsbyBXb3JsZCEiIDw8IHN0ZDo6ZW5kbDsKcmV0dXJuIDA7Cn0KfTsKCmludCBtYWluKCkgewoJQSogYSA9IG5ldyBCOwogICAgYS0+ZigpOwogICAgZGVsZXRlIGE7CiAgICByZXR1cm4gMDsKfQ==