#include <iostream>
using namespace std;
class Object {
public:
virtual void move() = 0;
virtual void move(string) = 0;
virtual void powerOn() = 0;
virtual void powerOff() = 0;
virtual void speak() = 0;
};
class Electronics : public Object {
public:
virtual void move() override {}
virtual void move(string) override {}
virtual void powerOn() override {cout << "powerOn" << endl;}
virtual void powerOff() override {cout << "powerOff" << endl;}
virtual void speak() override {}
};
class Phone : public Electronics {
virtual void powerOn() override {cout << "phone:powerOn" << endl;}
virtual void powerOff() override {cout << "phone:powerOff" << endl;}
};
int main() {
Object* phone = new Phone;
phone->move();
phone->powerOn();
phone->powerOff();
phone->speak();
delete phone;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgT2JqZWN0IHsKIHB1YmxpYzoKICB2aXJ0dWFsIHZvaWQgbW92ZSgpID0gMDsKICB2aXJ0dWFsIHZvaWQgbW92ZShzdHJpbmcpID0gMDsKICB2aXJ0dWFsIHZvaWQgcG93ZXJPbigpID0gMDsKICB2aXJ0dWFsIHZvaWQgcG93ZXJPZmYoKSA9IDA7CiAgdmlydHVhbCB2b2lkIHNwZWFrKCkgPSAwOyAKfTsKCmNsYXNzIEVsZWN0cm9uaWNzIDogcHVibGljIE9iamVjdCB7CiBwdWJsaWM6CiAgdmlydHVhbCB2b2lkIG1vdmUoKSBvdmVycmlkZSB7fQogIHZpcnR1YWwgdm9pZCBtb3ZlKHN0cmluZykgb3ZlcnJpZGUge30KICB2aXJ0dWFsIHZvaWQgcG93ZXJPbigpIG92ZXJyaWRlIHtjb3V0IDw8ICJwb3dlck9uIiA8PCBlbmRsO30KICB2aXJ0dWFsIHZvaWQgcG93ZXJPZmYoKSBvdmVycmlkZSB7Y291dCA8PCAicG93ZXJPZmYiIDw8IGVuZGw7fQogIHZpcnR1YWwgdm9pZCBzcGVhaygpIG92ZXJyaWRlIHt9IAp9OwoKY2xhc3MgUGhvbmUgOiBwdWJsaWMgRWxlY3Ryb25pY3MgewogIHZpcnR1YWwgdm9pZCBwb3dlck9uKCkgb3ZlcnJpZGUge2NvdXQgPDwgInBob25lOnBvd2VyT24iIDw8IGVuZGw7fQogIHZpcnR1YWwgdm9pZCBwb3dlck9mZigpIG92ZXJyaWRlIHtjb3V0IDw8ICJwaG9uZTpwb3dlck9mZiIgPDwgZW5kbDt9Cn07CgppbnQgbWFpbigpIHsKCU9iamVjdCogcGhvbmUgPSBuZXcgUGhvbmU7CgkKCXBob25lLT5tb3ZlKCk7CglwaG9uZS0+cG93ZXJPbigpOwoJcGhvbmUtPnBvd2VyT2ZmKCk7CglwaG9uZS0+c3BlYWsoKTsKCQoJZGVsZXRlIHBob25lOwoJcmV0dXJuIDA7Cn0=