Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendet „Link* next“ den eingefügten Klassennamen in C-Vorlagen?

Verwendet „Link* next“ den eingefügten Klassennamen in C-Vorlagen?

DDD
DDDOriginal
2024-11-02 22:18:30749Durchsuche

Does `Link* next` Use the Injected Class Name in C   Templates?

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* sein?

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!

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