// Copyright 2016 Aleksandr Mikhailov
#include <bits/stdc++.h>
class A {
public:
virtual void f() {
std::cout << "A::f()" << std::endl;
}
virtual void g() {
std::cout << "A::g()" << std::endl;
}
};
class B {
public:
virtual void f() {
std::cout << "B::f()" << std::endl;
}
virtual void g() {
std::cout << "B::g()" << std::endl;
}
};
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
A * p_a = new A();
B * p_b = new B();
p_a->f();
p_a->g();
p_b->f();
p_b->g();
size_t * vptr_a = reinterpret_cast<size_t *>(p_a);
size_t * vptr_b = reinterpret_cast<size_t *>(p_b);
std::swap(*vptr_a, *vptr_b);
p_a->f();
p_a->g();
p_b->f();
p_b->g();
return 0;
}
Ly8gQ29weXJpZ2h0IDIwMTYgQWxla3NhbmRyIE1pa2hhaWxvdgoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgpjbGFzcyBBIHsKICBwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgZigpIHsKICAgICAgc3RkOjpjb3V0IDw8ICJBOjpmKCkiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIHZpcnR1YWwgdm9pZCBnKCkgewogICAgICBzdGQ6OmNvdXQgPDwgIkE6OmcoKSIgPDwgc3RkOjplbmRsOwogICAgfQp9OwoKY2xhc3MgQiB7CiAgcHVibGljOgogICAgdmlydHVhbCB2b2lkIGYoKSB7CiAgICAgIHN0ZDo6Y291dCA8PCAiQjo6ZigpIiA8PCBzdGQ6OmVuZGw7CiAgICB9CiAgICB2aXJ0dWFsIHZvaWQgZygpIHsKICAgICAgc3RkOjpjb3V0IDw8ICJCOjpnKCkiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgc3RkOjppb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIHN0ZDo6Y2luLnRpZShudWxscHRyKTsKICAgIEEgKiBwX2EgPSBuZXcgQSgpOwogICAgQiAqIHBfYiA9IG5ldyBCKCk7CiAgICBwX2EtPmYoKTsKICAgIHBfYS0+ZygpOwogICAgcF9iLT5mKCk7CiAgICBwX2ItPmcoKTsKICAgIHNpemVfdCAqIHZwdHJfYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90ICo+KHBfYSk7CiAgICBzaXplX3QgKiB2cHRyX2IgPSByZWludGVycHJldF9jYXN0PHNpemVfdCAqPihwX2IpOwogICAgc3RkOjpzd2FwKCp2cHRyX2EsICp2cHRyX2IpOwogICAgcF9hLT5mKCk7CiAgICBwX2EtPmcoKTsKICAgIHBfYi0+ZigpOwogICAgcF9iLT5nKCk7CiAgICByZXR1cm4gMDsKfQo=