Heim  >  Artikel  >  Backend-Entwicklung  >  Wie funktionieren Klassennamen in Klassenvorlagen ohne Vorlagenparameter?

Wie funktionieren Klassennamen in Klassenvorlagen ohne Vorlagenparameter?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 11:46:31357Durchsuche

How do Class Names in Class Templates Work Without Template Parameters?

Klassennamen in Klassenvorlagen ohne Vorlagenparameter

Betrachten Sie eine Klassenvorlage, die wie folgt definiert ist:

<code class="cpp">template <typename E>
class Link {
public:
    E element;
    Link* next;  // No typename argument here
};</code>

Die Der von Ihnen bereitgestellte Code enthält einen öffentlichen Member-Link* als Nächstes ohne ein Typnamenargument. Dies wird als „injizierter Klassenname“ bezeichnet.

Wenn der injizierte Klassenname im Rahmen der Klasse verwendet wird, entspricht er laut [temp.local] dem Klassennamen gefolgt von spitzen Klammern Enthält die Vorlagenparameter der Klasse. In diesem Fall wird Link effektiv zu Link.

Daher ist der Ausdruck Link* next innerhalb der Link-Klasse äquivalent zu Link* next. Diese praktische Funktion ermöglicht es der Klasse, sich selbst mit ihrem vollständigen Namen zu referenzieren, ohne die Vorlagenargumente explizit anzugeben.

Das obige ist der detaillierte Inhalt vonWie funktionieren Klassennamen in Klassenvorlagen ohne Vorlagenparameter?. 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