#include int id=0; struct if0 { virtual ~if0() { } virtual void if0method() { printf("if0method\n"); } }; struct if1 { virtual ~if1() { } virtual void if1method() { printf("if1method\n"); } }; struct if2 { virtual ~if2() { } virtual void if2method() { printf("if2method\n"); } }; struct vobj : if0, if1, if2 { vobj() : _id(id++) { printf("vobj(%d)=%p\n", _id, this); } virtual ~vobj() { printf("~vobj(%d)=%p\n", _id, this); } int _id; }; int main(int, char**) { vobj *obj= new vobj(); printf("created vobj: %p\n", obj); delete obj; if0 *o0= new vobj(); printf("created vobj-if0: %p\n", o0); delete o0; if1 *o1= new vobj(); printf("created vobj-if1: %p\n", o1); delete o1; if2 *o2= new vobj(); printf("created vobj-if2: %p\n", o2); delete o2; return 0; }