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
Freigeben: 2024-12-21 15:26:10
Original
287 Leute haben es durchsucht

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());
}
Nach dem Login kopieren

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!

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