Originally posted by Roseanne Zhang:
C# does not support multi inheritance either. Java and C# are both considered more OO than C++.
Originally posted by Greg Brouelette:
Interestingly enough, Bjarne Stroustrup, then author of the C++ language, has said that if he had to do it all over again, he would have left multiple inheiritence out of C++.
Originally posted by Guy Allard:
I think I recall Stroustrup saying one of the reasons MI was included is that it was 'very simple to implement'.
I implemented multiple inheritance in a way that imposed and overhead even if the user didn't use anything but single inheritance. This violated the "you don't pay for what you don't use" rule (4.5) and led to the (false) impression that multiple inheritance is inherently inefficient. I considered the overhead acceptable because it was small (one array access plus one addition per virtual function call), and because I knew a simple technique for implementing multiple inheritance so that there is absolutely no change in the implementation of a virtual function call in a single inheritance hierarchy (12.4). I chose the "sub-optimal" implementation because it was more portable.