Verwenden des Klassennamens in einer Klassenvorlage ohne Vorlagenparameter
Betrachten Sie den folgenden Code aus einem C-Buch:
<code class="cpp">template <typename E> class Link { ... Link* next; // this line may be confusing ... };</code>
In diesem Code wird das Mitglied next ohne Angabe des Vorlagenarguments E deklariert, was Bedenken hinsichtlich seiner Richtigkeit aufwirft. Sollte es als nächstes nicht Link
Erklärung
Dies wird durch das Konzept des „injizierten Klassennamens“ erklärt. Gemäß dem C-Standard [temp.local] entspricht der Klassenname in der Klassenvorlage bei Verwendung ohne Vorlagenargument dem Klassennamen, gefolgt von den in spitzen Klammern eingeschlossenen Vorlagenparametern. Daher entspricht Link* in diesem Fall Link
Diese Regel dient der Vereinfachung und stellt sicher, dass sich der Klassenname innerhalb der Klasse auf die Klasse selbst bezieht und nicht auf eine externe Entität mit der gleichen Namen. Im Fall von Klassenvorlagen bietet es eine Kurzschreibweise, insbesondere beim Umgang mit erweiterten Vorlagenargumentlisten.
Das obige ist der detaillierte Inhalt vonVerwendet „Link* next' den eingefügten Klassennamen in C-Vorlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!