Als «virtual-inheritance» getaggte Fragen

11
Was ist in C ++ eine virtuelle Basisklasse?
Ich möchte wissen, was eine " virtuelle Basisklasse " ist und was sie bedeutet. Lassen Sie mich ein Beispiel zeigen: class Foo { public: void DoSomething() { /* ... */ } }; class Bar : public virtual Foo { public: void DoSpecific() { /* ... */ } };


1
Warum wird der Standardkonstruktor bei der virtuellen Vererbung aufgerufen?
Ich verstehe nicht, warum im folgenden Code, wenn ich ein Objekt vom Typ instanziiere daughter, der Standardkonstruktor grandmother()aufgerufen wird. Ich dachte, dass entweder der grandmother(int)Konstruktor aufgerufen werden sollte (um der Spezifikation meines motherKlassenkonstruktors zu folgen ), oder dass dieser Code wegen der virtuellen Vererbung überhaupt nicht kompiliert werden sollte. Hier …

4
Unterklassenadresse gleich Adresse der virtuellen Basisklasse?
Wir alle wissen, dass bei Verwendung einer einfachen Einzelvererbung die Adresse einer abgeleiteten Klasse mit der Adresse der Basisklasse übereinstimmt. Mehrfachvererbung macht das unwahr. Macht die virtuelle Vererbung das auch falsch? Mit anderen Worten, ist der folgende Code korrekt: struct A {}; struct B : virtual A { int i; …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.