Der Most Vexing Parse bezieht sich auf eine grammatikalische Mehrdeutigkeit in C, die bei der Deklaration von Funktionen zu unerwarteten Ergebnissen führen kann . Ein verwirrendes Detail ist die Möglichkeit, bestimmte Zeilen als Funktionsdeklarationen zu analysieren, auch wenn sie scheinbar nicht der erwarteten Syntax entsprechen.
Betrachten Sie die folgende Zeile:
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Diese Zeile kann aufgrund der Most Vexing Parse als Funktionsdeklaration interpretiert werden. Der erste temporäre Iterator, istream_iterator
Es ist jedoch nicht sofort klar, welchen Typ der erste temporäre Iterator darstellt. Der Schlüssel zum Verständnis liegt darin, zu erkennen, dass istream_iterator
Dadurch stellt sich die Frage, ob es möglich ist, Argumentnamen in Funktionsaufrufen willkürlich in Klammern zu setzen. Die Antwort lautet: Ja, Sie können Argumentnamen in Klammern setzen, wenn Sie sie hervorheben oder ihren Zweck verdeutlichen möchten. Davon wird jedoch generell abgeraten, da es zu verwirrendem oder unerwartetem Code führen kann. Der Hauptzweck dieser Syntax besteht darin, eine von C geerbte Legacy-Syntax zu unterstützen und gilt im modernen C-Code nicht als bewährte Methode.
Das obige ist der detaillierte Inhalt vonWas hat es mit der Klammerung von Argumentnamen in der irritierendsten Analyse auf sich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!