Temporäre Objekte, die in Visual Studio an nicht konstante Referenzen gebunden sind
Die Frage, ob temporäre Objekte an nicht konstante Referenzen gebunden werden können, ist aufgetreten war Gegenstand von Debatten unter Programmierern, insbesondere im Zusammenhang mit Visual Studio. Die Frage stellt sich, wenn Code in Visual Studio kompiliert wird, in anderen Compilern wie gcc jedoch Fehler generiert.
Um das Problem zu verstehen, betrachten Sie den folgenden Code:
class Zebra { int x; }; Zebra goo() { Zebra z; return z; } void foo(Zebra &x) { Zebra y; x = y; foo(goo()); }
Überraschenderweise ermöglicht Visual Studio dies Dieser Code lässt sich fehlerfrei kompilieren. gcc behandelt es jedoch als Fehler bei der Kompilierung. Diese Diskrepanz wirft die Frage nach der Gültigkeit der Bindung temporärer Objekte an nicht konstante Referenzen auf.
Um dies zu beheben, ist es wichtig zu beachten, dass Microsoft eine Erweiterung seines Compilers eingeführt hat, die die Bindung temporärer Objekte an ermöglicht Nicht-konstante Referenzen. Dieses Verhalten steht im Widerspruch zum C-Standard, der solche Bindungen verbietet.
Der Microsoft-Fehlerbericht „Temporäre Objekte können an nicht konstante Referenzen gebunden werden“ bietet weitere Einblicke in dieses Verhalten. Darin heißt es, dass es sich bei dieser Erweiterung um eine Ausnahme vom Standard handelt, die standardmäßig in Visual Studio aktiviert ist.
Der Fehlerbericht legt jedoch auch nahe, dass die Verwendung der Compileroption „/Za“, die Spracherweiterungen deaktiviert, dazu führen kann Code, der bei der Kompilierung fehlschlägt, entsprechend dem C-Standard. Dies weist darauf hin, dass das Verhalten von Visual Studio in diesem Fall eine bewusste Abweichung vom Standard darstellt.
Während Visual Studio also die Bindung temporärer Objekte an nicht konstante Referenzen ermöglicht, handelt es sich um eine Erweiterung, die vom C-Standard abweicht . Compiler, die sich strikt an den Standard halten, erzeugen Fehler, wenn sie auf solchen Code stoßen. Es wird empfohlen, bei der Verwendung dieser Erweiterung Vorsicht walten zu lassen, da dies zu unerwartetem Verhalten oder Portabilitätsproblemen führen kann.
Das obige ist der detaillierte Inhalt vonKönnen temporäre Objekte in Visual Studio an nicht konstante Referenzen gebunden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!