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!