Heim  >  Artikel  >  Backend-Entwicklung  >  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
Linda HamiltonOriginal
2024-11-04 04:56:30823Durchsuche

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>

Der Frage zufolge sollte folgender Code erlaubt sein:

<code class="cpp">Foo me;</code>

Stattdessen ist jedoch folgender Code erforderlich:

<code class="cpp">Foo<int> me;</code>

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>

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>

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!

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