1// prms-id: 4246 2 3extern "C" void abort (); 4int num_d; 5 6class A 7{ 8 public: 9 A() { } 10 virtual ~A() { } 11 virtual void id() { } 12}; 13 14class B 15{ 16 public: 17 B() { } 18 virtual ~B() { } 19 virtual void id() { } 20}; 21 22class C : public A, public B 23{ 24 public: 25 C() { } 26 virtual ~C() { } 27 void id() { abort(); } 28}; 29 30class D : public C 31{ 32 public: 33 D() { ++num_d; } 34 virtual ~D() { -- num_d; } 35 void id() { } 36}; 37 38int main() 39{ 40 D* dp2 = new D; 41 ((B*)dp2)->id(); 42 delete (B*) dp2; 43 44 B* bp1 = new D; 45 bp1->id(); 46 delete bp1; 47 return num_d != 0; 48} 49