I'm trying to understand the affect of inheritance order in C++.. I looked online, but I couldn't find a clear and sufficient answer...
So, for the sake of the question, assume there are 2 classes: class B and class C.
Now, define:
class A1 : public B, public C{ ... };
class A2 : public C, public B{ ... };
What is the difference between A1 and A2?
Thanks a lot!
The C++11 Standard says (§10.1) [class.mi]:
The order of derivation is not significant except as specified by the semantics of initialization by constructor (12.6.2), cleanup (12.4), and storage layout (9.2, 11.1).
The three referenced paragraphs reveal that
Note that the memory layout can be important. For example, if an external library makes naive C-style casts that assume that the part of the object it's interested in is at the beginning, it can lead to run time errors that are hard to debug.