C++ pointer multi-inheritance fun
c++, multiple-inheritance
Solution
- does pa point to a valid A object?
- does pb point to a valid B object?
Yes, the `C*` gets converted so that `pa` and `pb` point to the correct addresses.
- does pa == pb ?
No, usually not. There can't be an `A` object and a `B` object at the same address.
Furthermore, does
- pc == (C*) pa ?
- pc == (C*) pb ?
The cast converts the pointers back to the address of the `C` object, so both equalities are true.
Problem
I'm writing some code involving inheritance from a basic ref-counting pointer class; and some intricacies of C++ popped up. I've reduced it as follows: Suppose I have: ``` class A{}; class B{}; class C: public A, public B {}; C c; C* pc = &c; B* pb = &c; A* pa = &c; // does pa point to a valid A object? // does pb point to a valid B object? // does pa == pb ? ``` Furthermore, does: ``` // pc == (C*) pa ? // pc == (C*) pb ? ``` Thanks!