#include <iostream>
class Base
{
public:
virtual void methodA()=0;
void methodB()
{
this->methodA();
}
};
class Derivated: public Base
{
public:
virtual void methodA()
{
std::cout << "A" << std::endl;
}
};
int main()
{
Derivated d;
d.methodB();
Base* b=new Derivated;
b->methodB();
delete b;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCmNsYXNzIEJhc2UKewogICAgcHVibGljOgogICAgICAgIHZpcnR1YWwgdm9pZCBtZXRob2RBKCk9MDsKICAgICAgICB2b2lkIG1ldGhvZEIoKQogICAgICAgIHsKICAgICAgICAgICAgdGhpcy0+bWV0aG9kQSgpOwogICAgICAgIH0KfTsKIApjbGFzcyBEZXJpdmF0ZWQ6IHB1YmxpYyBCYXNlCnsKICAgIHB1YmxpYzoKICAgICAgICB2aXJ0dWFsIHZvaWQgbWV0aG9kQSgpCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkEiIDw8IHN0ZDo6ZW5kbDsKICAgICAgICB9Cn07CiAKaW50IG1haW4oKQp7CiAgICBEZXJpdmF0ZWQgZDsKICAgIGQubWV0aG9kQigpOwogICAgCiAgICBCYXNlKiBiPW5ldyBEZXJpdmF0ZWQ7CiAgICBiLT5tZXRob2RCKCk7CiAgICBkZWxldGUgYjsKICAgIHJldHVybiAwOwp9