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();
tatsächlich nicht Rufen Sie den Konstruktor für die Class-Klasse 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 wird hervorgehoben ein Problem, das als das „ärgerlichste Parsen“ in C bekannt ist. Wenn er auf die Zeile:
Class object();
stößt, interpretiert der C-Parser 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:
#include <iostream> using namespace std; class Class { Class() { cout << "default constructor called"; } ~Class() { cout << "destructor called"; } }; int main() { Class object; // Correctly invokes the constructor }
Führen Sie den korrigierten Code aus, um die erwartete Ausgabe zu beobachten:
default constructor called destructor called
Das obige ist der detaillierte Inhalt vonWarum erstellt „Class object();' kein C-Objekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!