c++.chat - How does multiple Inheritance Work?
- janderson (32/32) Oct 31 2006 Just out of interest,
Just out of interest,
How does the compiler deal with multiple inheritance? Originally I
thought the compiler would generate a separate V-table for each class
however I can't see how that would work for when the class is upcasted.
ie
class A
{
virtual void a();
};
class B
{
virtual void b();
}
class AB : public A, public B
{
virtual void c();
};
...
AB *ab = new AB();
A *a = dynamic_cast<A*>(ab);
B *b = dynamic_cast<B*>(ab);
a->a(); //Ok for method which is in "slot 1" of the vtable
b->b(); //The function offset in b is in the same offset as a right? Ok
you probably could offset all b calls into the second slot and have lots
of padding but that wouldn't work across libraries.
I read somewhere that gcc use pointer fixups. What does that mean?
What does DMC do? What do other compilers use? Do they optimise for
multiple interface inheritance (which I guess is an easier case?) What
other optimisation do they perform?
I thought I understood inheritance but this throws a spanner in the works.
-Cheers
Joel
Oct 31 2006








janderson <askme me.com>