Was sind real-world-Beispiele für C++ - Mehrfachvererbung?
Neben lehrbuch-Beispiele-in der wirklichen Welt-macht es überhaupt Sinn machen, verwenden Sie die mehrfache Vererbung (wo mehr als eine der Basisklassen sind keine reinen interfaces) in C++?
- +1 in fast 20 Jahren C++ - Programmierung habe ich noch nie in einer situation gewesen, wo ich brauchte, um multiple inheritence.
- das bedeutet nicht, dass jemand sollte nicht wissen, wie Mehrfachvererbung in C++ funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sehr üblich, bei der Verwendung von Policy-based design, zum Beispiel.
Einfachste Punkt, an
iostream
, die erbt vonistream
undostream
.cin
undcout
sindistream
undostream
jeweils aberfstream
stammt ausiostream
.Microsofts ATL - (Active Template Library) verwendet multiple Vererbung mixin-Klassen:
http://en.wikipedia.org/wiki/Active_Template_Library
IMO, es ist offen für argument. Vor der Vorlagen, gab es eine ganze Reihe von Fällen, dass es gerechtfertigt ist. Im Grunde könnte man die Basisklassen verwenden, wie Sie können, verwenden Sie den policy-Klassen mit templates. Betrachten Sie beispielsweise eine Vorlage wie:
Wenn Sie lieber nicht verwenden von Vorlagen aus irgendeinem Grund, können Sie (einige) ziemlich ähnliche Möglichkeiten wie mit Mehrfachvererbung:
};
In beiden Fällen, Sie sind im Grunde die Einbettung einer Instanz von "Politik" in Ihrem neuen Objekt. Da wir mit privaten Vererbung, es gibt keine Sorge mit der LSP-ähnlich wie mit der Politik-basierte Vorlagen, die Absicht ist, nicht eine große Hierarchie, die behauptet, etwas über die Beziehungen zwischen den Mitgliedern der Hierarchie-eher, es geht einfach um die Schaffung der Möglichkeit, eine Vielzahl von nicht verwandten Klassen auf Nachfrage.
Habe ich mehrfache Vererbung verwendet, die in der 'realen Welt' - in einem job, wo ich involviert war in die Entwicklung eines mapping-Anwendung.
Leider kann ich mich nicht erinnern das genaue Beispiel, das finde ich unglaublich frustrierend.
Jedoch, hier ist ein interessanter Artikel über die Punkte zu prüfen und alternative Muster oder Lösungen, in Betracht zu ziehen:
http://www.parashift.com/c++-faq-lite/mehrfach-Vererbung.html#faq-25.2
Ich mag die Verwendung der Fahrzeuge für die Beispiele - besonders das hinzufügen in die Amphibien-Fahrzeug.
Mehrfachvererbung hat definitiv seinen Platz und es kann sehr nützlich sein. Als Allgemeine Richtlinie eine Basis-Klasse sollte Abstrakt sein, Wann immer möglich, sollten Sie in der Lage sein, um ein Objekt zu erstellen, aber nichts stoppen Sie von der übernahme von konkreten Klasse. Es ist definitiv ein Verdienst zu t hat Sie den Vorteil, die geerbte Implementierung von Basisklasse. Beispiel auf eine der Antwort auf die iostream-ist ein guter. Ein anderes Beispiel ist vielleicht zu sagen, dass die Modellierung einen Mitarbeiter, der ist auch ein Inhaber/Geschäftsführer eines Unternehmens und werden Sie Modell als
Nun ein WorkingDirector Objekt tun können, was ein Angestellter und ein Geschäftsführer tun können, die perfekt in die realworld. Wir würden auch brauchen, um zu überschreiben, die Methode der Umsetzung.
In vielen Fällen die Implementierung von design-patterns sind auch einfacher gemacht mit Mehrfachvererbung unterstützen.