Heim >Backend-Entwicklung >C++ >Warum wird eine rein virtuelle Funktion mit „=0' initialisiert?

Warum wird eine rein virtuelle Funktion mit „=0' initialisiert?

Susan Sarandon
Susan SarandonOriginal
2024-12-04 18:31:14912Durchsuche

Why is a Pure Virtual Function Initialized with

Warum ist die Standardinitialisierung einer rein virtuellen Funktion „=0“?

In der objektorientierten Programmierung sind rein virtuelle Funktionen ein entscheidendes Konzept. Wie der Name schon sagt, handelt es sich um virtuelle Funktionen, die in abgeleiteten Klassen implementiert werden müssen, bevor das Programm abgeschlossen werden kann. Um eine Funktion als rein virtuell zu deklarieren, verwenden Sie die Syntax:

virtual void fun() = 0;

Ein bemerkenswerter Aspekt rein virtueller Funktionen ist ihre Standardinitialisierung auf 0. Dies führt zu der Frage: Warum wird dieser bestimmte Wert gewählt?

Entgegen allgemeiner Annahmen ist die „=0“-Initialisierung nicht dazu gedacht, den vtable-Eintrag für die rein virtuelle Funktion auf NULL zu setzen. Dies wurde von Bjarne Stroustrup, dem Erfinder von C, in seinem Buch „The Design & Evolution of C“ bestätigt:

The curious "=0" syntax was chosen ... because at the time I saw no chance of getting a new keyword accepted.

Mit anderen Worten, die Wahl von „=0“ war rein syntaktisch, getrieben von das Fehlen einer besseren Möglichkeit, eine rein virtuelle Funktion zu diesem Zeitpunkt darzustellen.

Es ist wichtig zu beachten, dass Stroustrup auch anerkennt, dass das Setzen des vtable-Eintrags auf NULL ist nicht der ideale Weg, rein virtuelle Funktionen zu implementieren. Moderne C-Compiler handhaben diesen Aspekt effizienter und stellen sicher, dass rein virtuelle Funktionen angemessen gehandhabt werden, ohne auf die =0-Initialisierung angewiesen zu sein.

Das obige ist der detaillierte Inhalt vonWarum wird eine rein virtuelle Funktion mit „=0' initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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