Heim > Backend-Entwicklung > C++ > Warum muss ich immer noch Argumente für eine Klassenvorlage mit Standardargumenten angeben?

Warum muss ich immer noch Argumente für eine Klassenvorlage mit Standardargumenten angeben?

Linda Hamilton
Freigeben: 2024-11-04 04:56:30
Original
877 Leute haben es durchsucht

Why Do I Still Need to Specify Arguments for a Class Template with Default Arguments?

Standardvorlagenargumente in C verstehen: Spezifizierte Argumente vermeiden

In der C-Programmierung ist es möglich, eine Klassenvorlage mit Standardvorlagenargumenten zu deklarieren . Es kann jedoch verwirrend sein, zu verstehen, warum die Angabe von Argumenten in bestimmten Szenarien immer noch erforderlich ist.

Ursprüngliche Frage:

Bedenken Sie die folgende Klassenvorlage:

<code class="cpp">template <typename T = int>
class Foo {
};</code>
Nach dem Login kopieren

Der Frage zufolge sollte folgender Code erlaubt sein:

<code class="cpp">Foo me;</code>
Nach dem Login kopieren
Nach dem Login kopieren

Stattdessen ist jedoch folgender Code erforderlich:

<code class="cpp">Foo<int> me;</code>
Nach dem Login kopieren

Antwort:

Vor C 17 war die Angabe von Argumenten in einer Klassenvorlagendeklaration mit Standardargumenten obligatorisch. Mit anderen Worten, der folgende Code war erforderlich:

<code class="cpp">Foo<> me;</code>
Nach dem Login kopieren

Auch wenn das Vorlagenargument nicht explizit angegeben wird, werden die leeren spitzen Klammern < > muss vorhanden sein, um anzuzeigen, dass das Standardargument verwendet wird. Diese Syntax ist analog zum Aufruf einer Funktion mit einem einzelnen Standardargument, das leere Klammern () erfordert.

C 17-Update:

In C 17 hat sich dieses Verhalten geändert , und es wurde möglich, die spitzen Klammern <> wegzulassen. bei Verwendung des Standardvorlagenarguments. Daher ist nun die folgende alternative Syntax zulässig:

<code class="cpp">Foo me;</code>
Nach dem Login kopieren
Nach dem Login kopieren

Schlussfolgerung:

Um die Anforderung der Angabe von Argumenten in Klassenvorlagen mit Standardargumenten zu verstehen, ist eine Vertrautheit mit dem Historischen erforderlich Entwicklung von C . In Versionen vor C 17 werden explizite spitze Klammern <> waren erforderlich, während C 17 eine bequemere Syntax einführte, die es ermöglicht, sie bei Verwendung des Standardarguments wegzulassen.

Das obige ist der detaillierte Inhalt vonWarum muss ich immer noch Argumente für eine Klassenvorlage mit Standardargumenten angeben?. 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