| struct A |
| { |
| int a; |
| A (int aa): a (aa) {} |
| }; |
| |
| struct B: public A |
| { |
| int b; |
| B (int aa, int bb): A (aa), b(bb) {} |
| }; |
| |
| |
| struct Alpha |
| { |
| virtual void x() { } |
| }; |
| |
| struct Gamma |
| { |
| }; |
| |
| struct Derived : public Alpha |
| { |
| }; |
| |
| struct VirtuallyDerived : public virtual Alpha |
| { |
| }; |
| |
| struct DoublyDerived : public VirtuallyDerived, |
| public virtual Alpha, |
| public Gamma |
| { |
| }; |
| |
| int |
| main (int argc, char **argv) |
| { |
| A *a = new B(42, 1729); |
| B *b = (B *) a; |
| A &ar = *b; |
| B &br = (B&)ar; |
| |
| Derived derived; |
| DoublyDerived doublyderived; |
| |
| Alpha *ad = &derived; |
| Alpha *add = &doublyderived; |
| |
| return 0; /* breakpoint spot: casts.exp: 1 */ |
| } |