Heim > Backend-Entwicklung > C++ > Warum werden rein virtuelle Funktionen mit „0' initialisiert?

Warum werden rein virtuelle Funktionen mit „0' initialisiert?

Patricia Arquette
Freigeben: 2024-11-26 14:32:09
Original
165 Leute haben es durchsucht

Why are Pure Virtual Functions Initialized with `0`?

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage