#include <iostream>
class A
{
public:
virtual ~A() {}
void print()
{
print_impl();
}
private:
virtual void print_impl() = 0;
};
class B : public A
{
void print_impl() { std::cout << "B" << std::endl; }
};
int main()
{
A* b = new B();
b->print();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQQp7CnB1YmxpYzoKICAgdmlydHVhbCB+QSgpIHt9CiAgIHZvaWQgcHJpbnQoKQogICB7CiAgICAgICBwcmludF9pbXBsKCk7CiAgIH0KcHJpdmF0ZToKICAgIHZpcnR1YWwgdm9pZCBwcmludF9pbXBsKCkgPSAwOwp9OwoKY2xhc3MgQiA6IHB1YmxpYyBBCnsKICAgIHZvaWQgcHJpbnRfaW1wbCgpIHsgc3RkOjpjb3V0IDw8ICJCIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCmludCBtYWluKCkKewogICAgQSogYiA9IG5ldyBCKCk7CiAgICBiLT5wcmludCgpOwp9