Member offsets in multiple inheritance

pieniek edek.pienkowski@gmail.com
Thu May 26 17:52:00 GMT 2011


Hello,

I have always though, that given a pointer to an object, members are at 
(this) + (member-offset). But this cannot be true for multiple 
inheritance, no?

Example:

struct A {
    int x,y;
}

struct B {
    int a, b, c;
}

struct C : public A, public B {}

int func (B* b, B* actuallyCinstance) {	
     return b->b + actuallyCinstance->b;
}

How is the B::b member accessed, especially b->b when b is B? What is 
the cost of that (x86_64)?

Thanks,
Edek



More information about the Gcc-help mailing list