#include <iostream>
using namespace std;
class Abstract {
public:
int x;
virtual void SetX() = 0;
virtual void PrintX() { std:: cout << x << std::endl;}
};
class Base: public Abstract {
public:
int x = 7;
void SetX() override { Abstract::x = 11; };
void PrintX() override { std:: cout << x << std::endl;}
};
int main() {
Base *B = new Base();
B->SetX();
std::cout << " -----------------\n";
std::cout << B->Abstract::x << std::endl;
std::cout << B->Base::x << std::endl;
std::cout << " -----------------\n";
B->Abstract::PrintX();
B->PrintX();
std::cout << " -----------------\n";
delete B;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQWJzdHJhY3QgewogIHB1YmxpYzoKICAgIGludCB4OwogICAgdmlydHVhbCB2b2lkIFNldFgoKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgUHJpbnRYKCkgeyBzdGQ6OiBjb3V0IDw8IHggPDwgc3RkOjplbmRsO30KfTsKCmNsYXNzIEJhc2U6IHB1YmxpYyBBYnN0cmFjdCB7CiAgcHVibGljOgogICAgaW50IHggPSA3OwogICAgdm9pZCBTZXRYKCkgb3ZlcnJpZGUgeyBBYnN0cmFjdDo6eCA9IDExOyB9OwogICAgdm9pZCBQcmludFgoKSBvdmVycmlkZSB7IHN0ZDo6IGNvdXQgPDwgeCA8PCBzdGQ6OmVuZGw7fQp9OwoKaW50IG1haW4oKSB7CiAgQmFzZSAqQiA9IG5ldyBCYXNlKCk7CiAgQi0+U2V0WCgpOwogIHN0ZDo6Y291dCA8PCAiIC0tLS0tLS0tLS0tLS0tLS0tXG4iOwogIHN0ZDo6Y291dCA8PCBCLT5BYnN0cmFjdDo6eCA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8IEItPkJhc2U6OnggPDwgc3RkOjplbmRsOwogIHN0ZDo6Y291dCA8PCAiIC0tLS0tLS0tLS0tLS0tLS0tXG4iOwogIEItPkFic3RyYWN0OjpQcmludFgoKTsKICBCLT5QcmludFgoKTsKICBzdGQ6OmNvdXQgPDwgIiAtLS0tLS0tLS0tLS0tLS0tLVxuIjsKICBkZWxldGUgQjsKICByZXR1cm4gMDsKfQ==