2 extern "C" int printf(const char *,...);
9 struct V2
: virtual V1
{
15 struct C
: virtual V1
, virtual V2
{
30 extern "C" int printf(const char *,...);
31 int main(int argc
, char**argv
)
37 printf("Int caught\n");
42 printf("V1::foo called\n"); return 1; }
44 printf("V1 called\n"); }
46 printf("~V1 called\n"); }
49 printf("V2::foo called\n"); return 1; }
51 printf("V2 called\n"); }
53 printf("~V2 called\n"); }
56 printf("C::foo called %d\n", c
); return 1; }
59 V1
*vv
= this; vv
->foo();
60 C
*cp
= dynamic_cast<C
*>(vv
);
62 printf("PASSED this == cp\n");
64 printf("FAILED this != cp\n");
68 printf("~C called\n");
69 V1
*vv
= this; vv
->foo();
70 C
*cp
= dynamic_cast<C
*>(vv
);
72 printf("PASSED this == cp\n");
74 printf("FAILED this != cp\n");
79 printf("D::bar called\n"); return 1; }
81 printf("D called\n"); throw 5; }
83 printf("~D called\n"); }