Verstehen der Initialisierung rein virtueller Funktionen mit „0“
Bei der Deklaration rein virtueller Funktionen stellen Sie möglicherweise fest, dass diese immer zugewiesen sind der Wert 0:
virtual void fun() = 0;
Diese Praxis wirft die Frage auf, warum rein virtuelle Funktionen mit initialisiert werden 0.
Die falsche Annahme
Anfangs haben Sie vielleicht geglaubt, dass rein virtuellen Funktionen der Wert 0 zugewiesen wird, um den entsprechenden vtable-Eintrag auf NULL zu setzen. Diese Annahme ist jedoch falsch. Der einer rein virtuellen Funktion zugewiesene Wert setzt den vtable-Eintrag nicht unbedingt auf NULL.
Der wahre Grund für „0“
Die Verwendung der =0-Syntax für rein virtuelle Funktionen geht auf Bjarne Stroustrups frühe Arbeiten zu C zurück. Anstatt ein neues Schlüsselwort wie „pure“ einzuführen, entschied er sich für die Syntax =0, weil er glaubte, dass sie damals bessere Chancen hatte, von der C-Community akzeptiert zu werden.
Wie Stroustrup selbst in seinem Buch feststellt: „The Design & Evolution of C“: Die =0-Syntax war nicht dazu gedacht, den vtable-Eintrag auf NULL zu setzen. Darüber hinaus ist das Setzen des vtable-Eintrags auf NULL keine ideale Implementierungsstrategie für rein virtuelle Funktionen.
Fazit
Die Initialisierung rein virtueller Funktionen mit 0 hat nichts damit zu tun Setzen des vtable-Eintrags auf NULL. Stattdessen wurde die =0-Syntax in den frühen Stadien der C-Entwicklung ausschließlich aus Gründen der Lesbarkeit und Kompatibilität gewählt.
Das obige ist der detaillierte Inhalt vonWarum werden rein virtuelle Funktionen mit „0' initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!