C ++: Ist "Virtuell" auf alle Nachkommen vererbt

8

Nehmen Sie den folgenden einfachen Fall an (beachten Sie den Speicherort von virtuell )

%Vor%

Würde der folgende Aufruf B::func() oder C::func() aufrufen?

%Vor%     
Jonathan 10.04.2011, 08:49
quelle

3 Antworten

6

Beispiele mit Zeigern sowie Referenz.

  • Mit Zeiger

    %Vor%
  • Verwendung der Referenz. Notieren Sie den letzten Anruf: den wichtigsten Anruf.

    %Vor%

Online-Demo: Ссылка

    
Nawaz 10.04.2011, 09:02
quelle
7
  1. Ihr Code ist ungültig C ++. Was sind die Klammern in der Klassendefinition?
  2. Es hängt vom dynamischen Typ des Objekts ab, auf das pointer_to_b_type zeigt.
  3. Wenn ich verstehe, was Sie wirklich fragen möchten, dann "Ja". Dies ruft C::func :

    auf %Vor%
ybungalobill 10.04.2011 08:54
quelle
3

Ruft die Funktion in der Klasse auf, auf die Sie sich beziehen. Es funktioniert jedoch, wenn es nicht existiert.

Probieren Sie den folgenden Code:

%Vor%

Hoffe, das hilft

    
Ben Stott 10.04.2011 08:54
quelle