C++ und Java : die Verwendung von virtuellen Basisklasse

Habe ich einige Zweifel beim Vergleich von C++ und Java Mehrfachvererbung.

  1. Sogar Java verwendet mehrere, multi-level-Vererbung durch Schnittstellen - aber warum nicht es verwenden, so etwas wie eine virtuelle Basisklasse in C++ ? Ist es, weil die Mitglieder einer java-Schnittstelle gewährleistet eine Kopie im Speicher (Sie sind public static final), und die Methoden sind nur deklariert und nicht definiert ist ?

  2. Abgesehen von spart Speicher, ist es eine andere Verwendung von virtuellen Klassen in C++ ? Gibt es irgendwelche Einschränkungen, wenn ich vergesse, um dieses feature in meinem Mehrfachvererbung Programme ?

  3. Dieser ist etwas philosophisch - aber warum nicht die C++ - Entwickler machte es zu einem Standard zu machen, jede Basisklasse virtuell ? Was war die Notwendigkeit der Bereitstellung von Flexibilität ?

Beispiele geschätzt werden. Danke !!

  • Was meinst du mit "virtual base class" in C++? Eine Klasse, die mindestens eine rein virtuelle Funktion (z.B. virtual void booga() = 0; )?
  • publib.boulder.ibm.com/infocenter/comphelp/v7v91/...
  • Eine Basis Klasse mit mindestens einer virtuellen Funktion (nicht unbedingt rein virtuelle Funktion) ist eine virtuelle Basisklasse. Eine Basis Klasse mit mindestens einer rein virtuellen Funktion aufgerufen wird als abstrakte Basisklasse.
  • Wir sollten etwas präziser sein. C++'s "virtual base class" ist gut definiert, um eine Basis-Klasse, praktisch vererbt werden. Ihre erste Begriff wäre besser, als "polymorphe Basisklasse".
InformationsquelleAutor Jaguar | 2010-08-23
Schreibe einen Kommentar