Heim >Backend-Entwicklung >C++ >Warum lässt Visual Studio zu, dass nicht konstante Referenzen an temporäre Objekte gebunden werden?

Warum lässt Visual Studio zu, dass nicht konstante Referenzen an temporäre Objekte gebunden werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-21 15:26:10279Durchsuche

Why Does Visual Studio Allow Non-Const References to Bind to Temporary Objects?

Visual Studio-Fehler: Nicht konstante Referenz an temporäres Objekt gebunden

Der angegebene Codeausschnitt veranschaulicht ein eigenartiges Verhalten, das in Visual Studio beobachtet wurde:

class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
    Zebra y;
    x = y;
    foo(goo());
}

Visual Studio ermöglicht die fehlerfreie Kompilierung dieses Codes, während gcc einen Kompilierungsfehler auslöst. Dieses Verhalten wird noch rätselhafter, wenn ein Typedef verwendet wird, um Zebra als int darzustellen, da Visual Studio dann das Problem erkennt.

Dieses Verhalten wird durch eine alte Visual Studio-Erweiterung gesteuert. Wie im Fehlerbericht von Microsoft „Temporäre Objekte können an nicht konstante Referenzen gebunden werden“ dokumentiert, lässt Visual Studio zu, dass nicht konstante Referenzen an temporäre Objekte gebunden werden.

Diese Erweiterung kann jedoch mit dem / deaktiviert werden. Za-Compiler-Flag, das dazu führt, dass das betreffende Code-Snippet einen Fehler anzeigt. Darüber hinaus ist eine Warnung der Stufe 4 (aktiviert mit /W4) verfügbar, um dieses Problem zu kennzeichnen.

Das obige ist der detaillierte Inhalt vonWarum lässt Visual Studio zu, dass nicht konstante Referenzen an temporäre Objekte gebunden werden?. 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