#include <iostream>
using namespace std;
class A {
public:
virtual string Identify() = 0;
virtual string D_Work() { throw; } // If it's not defined, throw
};
class B : public A {
public:
string Identify() {return "B"; }
};
class D : public B {
public:
string D_Work() {return "D_Work"; }
};
int main() {
A *d = new D;
std::cout << d->D_Work();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CnB1YmxpYzoKICB2aXJ0dWFsIHN0cmluZyBJZGVudGlmeSgpID0gMDsKICB2aXJ0dWFsIHN0cmluZyBEX1dvcmsoKSB7IHRocm93OyB9IC8vIElmIGl0J3Mgbm90IGRlZmluZWQsIHRocm93Cn07CgpjbGFzcyBCIDogcHVibGljIEEgewpwdWJsaWM6CiAgc3RyaW5nIElkZW50aWZ5KCkge3JldHVybiAiQiI7IH0KfTsKCmNsYXNzIEQgOiBwdWJsaWMgQiB7CnB1YmxpYzoKICBzdHJpbmcgRF9Xb3JrKCkge3JldHVybiAiRF9Xb3JrIjsgfQp9OwoKaW50IG1haW4oKSB7CglBICpkID0gbmV3IEQ7CglzdGQ6OmNvdXQgPDwgZC0+RF9Xb3JrKCk7CgkKCXJldHVybiAwOwp9