#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;
}