1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <iostream> using namespace std; struct A { virtual void f() {std::cout << "A\n";} }; struct B : public A { virtual void f() {std::cout << "B\n";} }; int main() { A* a = new B; B* b = dynamic_cast<B*>(a); b->f(); B& br = dynamic_cast<B&>(*a); br.f(); try { A* a2 = new A; B& fail = dynamic_cast<B&>(*a2); } catch(std::exception& e) { cout << e.what() << "\n"; } return 0; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEKewogICB2aXJ0dWFsIHZvaWQgZigpIHtzdGQ6OmNvdXQgPDwgIkFcbiI7fQp9OwpzdHJ1Y3QgQiA6IHB1YmxpYyBBCnsKICAgdmlydHVhbCB2b2lkIGYoKSB7c3RkOjpjb3V0IDw8ICJCXG4iO30KfTsKCmludCBtYWluKCkKewogICAgQSogYSA9IG5ldyBCOwogICAgCiAgICBCKiBiID0gZHluYW1pY19jYXN0PEIqPihhKTsKICAgIAogICAgYi0+ZigpOwogICAgCiAgICBCJiBiciA9IGR5bmFtaWNfY2FzdDxCJj4oKmEpOwogICAgCiAgICBici5mKCk7CiAgICAKICAgIHRyeQogICAgewogICAgICAgIEEqIGEyID0gbmV3IEE7CiAgICAgICAgQiYgZmFpbCA9IGR5bmFtaWNfY2FzdDxCJj4oKmEyKTsKICAgIH0KICAgIAogICAgY2F0Y2goc3RkOjpleGNlcHRpb24mIGUpCiAgICB7CiAgICAgICAgY291dCA8PCBlLndoYXQoKSA8PCAiXG4iOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQoK
-
upload with new input
-
result: Success time: 0.02s memory: 2812 kB returned value: 0
B B std::bad_cast


