#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "A" << endl;
}
void virtual f()
{
cout << "A->f()" << endl;
}
~A()
{
cout << "~A" << endl;
}
};
class B : public A
{
public:
B()
{
cout << "B" << endl;
}
void virtual f()
{
cout << "B->f()" << endl;
}
~B()
{
cout << "~B" << endl;
}
};
int main()
{
A *pa = new A();
pa->f();
B *pb = (B*)pa;
pb->f();
delete pa,pb;
pa = new B();
pa->f();
pb = (B*)pa;
pb->f();
}