#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;
}