#include <iostream>
struct A { virtual ~A(){} };
struct B { virtual ~B(){} };
struct C : A, B {};
struct S { virtual ~S(){} };
int main(void) {
A* a = new C;
B* b = dynamic_cast<B*>(a);
std::cout << b << std::endl;
S* s = reinterpret_cast<S*>(a);
b = dynamic_cast<B*>(s);
std::cout << b << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgeyB2aXJ0dWFsIH5BKCl7fSB9OwpzdHJ1Y3QgQiB7IHZpcnR1YWwgfkIoKXt9IH07CnN0cnVjdCBDIDogQSwgQiB7fTsKCnN0cnVjdCBTIHsgdmlydHVhbCB+Uygpe30gfTsKCmludCBtYWluKHZvaWQpIHsKCUEqIGEgPSBuZXcgQzsKCUIqIGIgPSBkeW5hbWljX2Nhc3Q8Qio+KGEpOwoJc3RkOjpjb3V0IDw8IGIgPDwgc3RkOjplbmRsOwoJCglTKiBzID0gcmVpbnRlcnByZXRfY2FzdDxTKj4oYSk7CgliID0gZHluYW1pY19jYXN0PEIqPihzKTsKCXN0ZDo6Y291dCA8PCBiIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9Cg==