#include <iostream>
using namespace std;
struct Base {
virtual void SomeMethod() {
std::cout<<"Do Something"<<std::endl;
}
};
struct Der : public Base {
virtual void SomeMethod() override = 0;
};
struct DerDer : Der {
virtual void SomeMethod() override
{
std::cout<<"Do something derived."<<std::endl;
}
};
int main(int argc, char *argv[])
{
DerDer x;
Base *pX = &x;
pX->SomeMethod();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBCYXNlIHsKICAgIHZpcnR1YWwgdm9pZCBTb21lTWV0aG9kKCkgewogICAgICAgIHN0ZDo6Y291dDw8IkRvIFNvbWV0aGluZyI8PHN0ZDo6ZW5kbDsKICAgIH0KfTsKCnN0cnVjdCBEZXIgOiBwdWJsaWMgQmFzZSB7CiAgICB2aXJ0dWFsIHZvaWQgU29tZU1ldGhvZCgpIG92ZXJyaWRlID0gMDsKfTsKCnN0cnVjdCBEZXJEZXIgOiBEZXIgewogICAgdmlydHVhbCB2b2lkIFNvbWVNZXRob2QoKSBvdmVycmlkZQogICAgewogICAgICAgIHN0ZDo6Y291dDw8IkRvIHNvbWV0aGluZyBkZXJpdmVkLiI8PHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAgIERlckRlciB4OwogICAgQmFzZSAqcFggPSAmeDsKICAgIHBYLT5Tb21lTWV0aG9kKCk7CiAgICByZXR1cm4gMDsKfQ==