473,503 Members | 2,148 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Dangers of Multiple Inheritance

Hi all,

I know there are quite a few arguments in favor or against MI. I know there
are a lot of usenet discussions about wether MI is actually needed or not.
These discussions mention the 'dangers' of MI.
The problem is; I know that there are dangers concerned with MI and I know
how I can avoid them, I just don't have a clear idea of what the dangers
actually are and if they are applicable to to the situations I encounter.
The only danger I (think I) really understand is the dreaded diamond.
But there also seems to be an issue with copying and assignment which I
don't see.
And is there more danger that I should be aware of? and will these problems
surface during compiling or runtime?

Does anybody know a good article specifically about this or else would
somebody care to explain it to me in this newsgroup?

TIA,

Corno
Jul 19 '05 #1
2 3584
"Corno" <corno@%spam%.dds.nl> a écrit dans le message de
news:bk**********@news.tudelft.nl...
And is there more danger that I should be aware of? and will these problems surface during compiling or runtime?


It is at least partially a case of saying it is dangerous to avoid having to
implement it in many GC based languages.
It apparently makes building an efficient GC more difficult to design (not
impossible, see Eiffel).
So Java & C# designer replaced it with interfaces (multiple inheritance
without data) as a workaround.

Jul 19 '05 #2
"Corno" <corno@%spam%.dds.nl> wrote in message
news:bk**********@news.tudelft.nl...

I know there are quite a few arguments in favor or against MI. I
know there are a lot of usenet discussions about wether MI is
actually needed or not.
MI is "not needed" in the way that classes "aren't needed". That is,
you can write equivalent programs without it, but the feature makes
some designs a lot simpler.
[...]
The only danger I (think I) really understand is the dreaded
diamond.
LOL@"dreaded" The diamond inheritance diagram strikes fear in
the hearts of coders!
But there also seems to be an issue with copying and assignment
which I don't see.
I don't see it either. You have to make sure that all your base
classes agree on how to copy and assign, but I'm not aware of any
nasty gotchas.
And is there more danger that I should be aware of? and will these
problems surface during compiling or runtime?
One issue to keep in mind is size. Many, if not most compilers will
make your derived class much bigger than it would be if you did
not use MI (but rather used a chained approach). There is a solution
for this, but it's a little tricky, and has its own set of issues.
Does anybody know a good article specifically about this or else
would somebody care to explain it to me in this newsgroup?


An interesting discussion to check out would be on the Boost
developer list. You can find the archives on Google. The thread
is about Loki::SmartPtr, which uses MI in a big and obvious way.
Quite a few issues relating to MI came up in that discussion. Look
for 'SmartPtr' and 'MI'.

Dave
Jul 19 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
4321
by: Graham Banks | last post by:
Does using multiple inheritance introduce any more performance overhead than single inheritance?
5
2166
by: Morgan Cheng | last post by:
It seems no pattern defined by GoF takes advantage of multiple inheritance. I am wondering if there is a situation where multiple inheritance is a necessary solution. When coding in C++, should...
20
10027
by: km | last post by:
Hi all, In the following code why am i not able to access class A's object attribute - 'a' ? I wishto extent class D with all the attributes of its base classes. how do i do that ? thanks in...
22
23316
by: Matthew Louden | last post by:
I want to know why C# doesnt support multiple inheritance? But why we can inherit multiple interfaces instead? I know this is the rule, but I dont understand why. Can anyone give me some concrete...
47
3591
by: Mark | last post by:
why doesn't .NET support multiple inheritance? I think it's so silly! Cheers, Mark
60
4867
by: Shawnk | last post by:
Some Sr. colleges and I have had an on going discussion relative to when and if C# will ever support 'true' multiple inheritance. Relevant to this, I wanted to query the C# community (the...
15
28311
by: iKiLL | last post by:
hi all, I would like to be able to create an umbrella class for all my main global sections but I would still like to keep them all in separate file something like the below but I keep getting...
7
3716
by: Adam Nielsen | last post by:
Hi everyone, I'm having some trouble getting the correct chain of constructors to be called when creating an object at the bottom of a hierarchy. Have a look at the code below - the inheritance...
47
3953
by: Larry Smith | last post by:
I just read a blurb in MSDN under the C++ "ref" keyword which states that: "Under the CLR object model, only public single inheritance is supported". Does this mean that no .NET class can ever...
0
7205
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7093
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
7287
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
1
7011
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
7468
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5596
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
3180
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
3170
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
401
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.