This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Member offsets in multiple inheritance


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]