Heim > Backend-Entwicklung > C++ > Hauptteil

Was bewirkt der Pfeiloperator („->') in einer Funktionsüberschrift?

Barbara Streisand
Freigeben: 2024-11-18 07:08:02
Original
982 Leute haben es durchsucht

What Does the Arrow Operator (`->`) In einer Funktionsüberschrift tun? 
`) In einer Funktionsüberschrift tun? " />

Pfeiloperator (->) in Funktionsüberschriften

In diesem Artikel wird der in Funktionsüberschriften verwendete Pfeiloperator (->) untersucht grundlegender Aspekt der Syntax von C 11.

Den Pfeiloperator verstehen

C 11 führte zwei äquivalente Syntaxen für die Funktionsdeklaration ein:

  1. return- Typbezeichner (Argument-Deklarationen...)
  2. Auto-Bezeichner (Argument-Deklarationen...) -> return_type

Der Pfeiloperator (->;) im Die zweite Syntax erfüllt einen entscheidenden Zweck. Sie ermöglicht die Ableitung des Rückgabetyps einer Funktion aus ihren Argumenten mithilfe des Schlüsselworts decltype.

Warum den automatisch abgeleiteten Rückgabetyp verwenden?

In bestimmten Situationen ist es vorteilhaft, den Rückgabetyp dynamisch basierend auf den Argumenttypen abzuleiten. Betrachten Sie beispielsweise die folgende Funktion, die die Summe zweier Werte berechnet:

template <typename T1, typename T2>
decltype(a + b) compose(T1 a, T2 b);
Nach dem Login kopieren

In diesem Fall: Das Argument decltype teilt dem Compiler mit, dass der Rückgabetyp mit dem Typ des Ausdrucks a b identisch sein sollte. Diese Deklaration löst jedoch einen Fehler aus, da dem Compiler Informationen zu a und b im decltype-Argument fehlen.

Fehlerbehebung

Um dieses Problem zu beheben, können Sie Folgendes tun: Verwenden Sie std::declval und die Vorlagenparameter, um die Typen manuell anzugeben:

template <typename T1, typename T2>
decltype(std::declval<T1>() + std::declval<T2>())
compose(T1 a, T2 b);
Nach dem Login kopieren

oder verwenden Sie die alternative Deklarationssyntax mit dem Pfeiloperator (->):

template <typename T1, typename T2>
auto compose(T1 a, T2 b) -> decltype(a + b);
Nach dem Login kopieren

The Letztere Option ist prägnanter und rationalisiert die Scoping-Regeln.

C 14-Erweiterungen

In C 14 ist die folgende Syntax auch zulässig, solange die Funktion vollständig definiert ist vor der Verwendung und alle Rückgabeanweisungen leiten sich vom gleichen Typ ab:

auto identifier (argument-declarations...)
Nach dem Login kopieren

Der Pfeiloperator (->) bleibt jedoch nützlich, um öffentliche Funktionen (in Headern) zu deklarieren, während ihre Körper in Quelldateien ausgeblendet werden.

Das obige ist der detaillierte Inhalt vonWas bewirkt der Pfeiloperator („->') in einer Funktionsüberschrift?. 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