Heim > Backend-Entwicklung > C++ > Hauptteil

Können Sie in C ein Objekt an seinen eigenen Konstruktor übergeben?

Linda Hamilton
Freigeben: 2024-11-11 00:36:02
Original
543 Leute haben es durchsucht

Can You Pass an Object to Its Own Constructor in C  ?

Können Objekte an ihre eigenen Konstruktoren übergeben werden?

Frage:

Innerhalb eines C Ist es akzeptabel, dem Konstruktor der Klasse ein Objekt als Argument zu übergeben? selbst?

Antwort:

Überraschenderweise ist die Übergabe eines Objekts an seinen eigenen Konstruktor nach dem C-Standard zulässig, obwohl dies unkonventionell erscheint. Dies wird durch Fehlerbericht 363 erklärt, der besagt, dass ein nicht initialisiertes Objekt zum Binden von Referenzen und zum Empfangen von Adressen verwendet werden kann.

Erklärung:

Abschnitt 3.8 des C 14 Der Standard stellt klar, dass vor Beginn oder Ende der Lebensdauer eines Objekts jeder GL-Wert, der auf das Objekt verweist, verwendet werden kann, jedoch nur für begrenzte Zwecke. Dazu gehören das Binden von Referenzen und das Empfangen von Adressen, die nicht vom Wert des Objekts abhängen.

Praktisch gesehen kann die Verwendung eines nicht initialisierten Objekts in einem Konstruktor zu Warnungen führen, wie Clangs Warnung vor „nicht initialisierten“ Variablen zeigt. Diese Warnungen weisen jedoch nicht auf undefiniertes Verhalten hin, da keine unbestimmten Werte erzeugt werden.

Ein Beispiel, das zu undefiniertem Verhalten führt, ist die Selbstinitialisierung mit einer Zuweisung, z. B. „int x = x“.

Schlussfolgerung:

Obwohl die Übergabe von Objekten an ihre eigenen Konstruktoren ungewöhnlich erscheinen mag, ist es eine gültige Praxis unter C Standard, der begrenzte Interaktionen mit nicht initialisierten Objekten während des Konstruktionsprozesses ermöglicht.

Das obige ist der detaillierte Inhalt vonKönnen Sie in C ein Objekt an seinen eigenen Konstruktor übergeben?. 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