#include <iostream>
using namespace std;
struct A {
A() { cout << "A()" << endl; }
A(const A &a) { cout << "A(const A&)" << endl; }
virtual ~A() { cout << "~A()" << endl; }
};
struct B : public A {
B() { cout << "B()" << endl; }
~B() { cout << "~B()" << endl; }
};
int main() {
try {
throw B();
} catch (A a) {
cout << "Catched" << endl;
}
cout << "After catch" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEgewogICAgQSgpIHsgY291dCA8PCAiQSgpIiA8PCBlbmRsOyB9CiAgICBBKGNvbnN0IEEgJmEpIHsgY291dCA8PCAiQShjb25zdCBBJikiIDw8IGVuZGw7IH0KICAgIHZpcnR1YWwgfkEoKSB7IGNvdXQgPDwgIn5BKCkiIDw8IGVuZGw7IH0KfTsKCnN0cnVjdCBCIDogcHVibGljIEEgewogICAgQigpIHsgY291dCA8PCAiQigpIiA8PCBlbmRsOyB9CiAgICB+QigpIHsgY291dCA8PCAifkIoKSIgPDwgZW5kbDsgfQp9OwoKaW50IG1haW4oKSB7CiAgICB0cnkgewogICAgICAgIHRocm93IEIoKTsKICAgIH0gY2F0Y2ggKEEgYSkgewogICAgICAgIGNvdXQgPDwgIkNhdGNoZWQiIDw8IGVuZGw7CiAgICB9CiAgICBjb3V0IDw8ICJBZnRlciBjYXRjaCIgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9