extern "C" int rtl_printf (char *str, ...);

//pthread_t thread;

class A {
protected:
    int a;
public:
    virtual void print()=0;
    A() { a = 1; rtl_printf("initializing A\n");}
    virtual ~A() { rtl_printf("uninitializing A\n"); }
};

class B : public A
{
public:
    B() { a = 1; rtl_printf("initializing B\n");}
    ~B() { rtl_printf("uninitializing B\n");}
    virtual void print() { rtl_printf("B::print: %d\n", a); }
};

B a;
A *ptr_b;

int main () {
    ptr_b = new B;
    ptr_b -> print();
    delete ptr_b;
    return 0;
}


