Grundlegendes zu einheitlichen Initialisierern und der schwierigsten Analyse
In C 11 stellen einheitliche Initialisierer eine prägnante Syntax für die Initialisierung von Objekten und Datenstrukturen bereit. Ihre Verwendung kann jedoch zu potenzieller Mehrdeutigkeit führen, die als „Most Vexing Parse“ bezeichnet wird.
Most Vexing Parse
Beachten Sie den folgenden Codeausschnitt:
<code class="cpp">#include<iostream> class Timer { public: Timer() {} }; int main() { auto dv = Timer(); // What is Timer() ? And what type is dv? int time_keeper(Timer()); // This is a function right? And why isn't the argument " Timer (*) ()"? return 0; }</code>
Analyse:
dv = Timer();
int time_keeper(Timer());
Schlussfolgerung:
Im Szenario mit der „ärgsten Analyse“ versucht der Compiler, auf den Typ und die Interpretation eines zu schließen Ausdruck basierend auf Kontext und Regeln. Wenn Programmierer verstehen, wie diese Regeln gelten, können sie Unklarheiten vermeiden und Code mit einer klaren Absicht schreiben.
Das obige ist der detaillierte Inhalt vonWas ist der nervigste Parse und warum passiert er in C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!