In C werden Konstruktoren verwendet, um Objekte einer Klasse zu initialisieren. Im bereitgestellten Codeausschnitt wird der Konstruktor jedoch nicht aufgerufen, was zu unerwartetem Verhalten führt.
Die problematische Zeile:
Class object();
ruft den Konstruktor für die Class-Klasse nicht tatsächlich auf. Stattdessen deklariert es eine Funktion, die ein Klassenobjekt zurückgibt. Um den Konstruktor korrekt aufzurufen und ein Objekt zu erstellen, muss ein Semikolon (;) an die Zeile angehängt werden:
Class object;
Das erste Code-Snippet hebt ein Problem hervor, das als das „ärgerlichste Parsen“ in C bekannt ist. Wenn der C-Parser auf die Zeile:
Class object();
stößt, interpretiert er sie mehrdeutig entweder als Funktionsdeklaration oder als Funktionsaufruf mit einer leeren Argumentliste. Diese Mehrdeutigkeit führt oft zu Verwirrung und unerwarteten Ergebnissen.
Um den Konstruktor aufzurufen und ein Objekt zu erstellen, sollte der Code aktualisiert werden auf:
#includeusing namespace std; class Class { Class() { cout Führen Sie den korrigierten Code aus, um die erwartete Ausgabe zu beobachten:
default constructor called destructor called
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3