Heim > Backend-Entwicklung > C++ > Hauptteil

Warum kann ich in meiner Konstruktordeklaration keine Klammern ohne Argumente verwenden?

Patricia Arquette
Freigeben: 2024-11-20 20:02:21
Original
991 Leute haben es durchsucht

Why Can't I Use Parentheses in my Constructor Declaration Without Arguments?

Ein verwirrender Parse-Fehler: Das Rätsel der Klammern in Konstruktorargumenten lösen

Beim Auftreffen auf die kryptische Fehlermeldung „Anfrage für Mitglied ‚Funktion1‘“ in „myObj“, das vom Nicht-Klassentyp „MyClass ()()“ ist, beim Versuch, ein C zu kompilieren Wenn Sie das Programm verwenden, denken Entwickler möglicherweise über die Gründe für diesen verwirrenden Analysefehler nach. Der betreffende Quellcode enthält eine Klasse mit einem Konstruktor ohne Argumente, deklariert mit der folgenden Zeile:

MyClass myObj();
Nach dem Login kopieren

Beim Ausführen des Kompilierungsprozesses tritt der oben genannte Fehler auf, der darauf hinweist, dass die Mitgliedsfunktion „function1“ dies nicht kann Der Zugriff erfolgt über das Objekt „myObj“, da „myObj“ als Nicht-Klassentyp wahrgenommen wird. Um dieses Problem zu beheben, wird der Code wie folgt geändert:

MyClass myObj;
Nach dem Login kopieren

Dies wirft die Frage auf, ob das Fehlen von Argumenten in einer Konstruktordeklaration das Weglassen von Klammern erfordert. Während in C bisher leere Konstruktordeklarationen mit Klammern verwendet wurden, hat der Sprachstandard eine entscheidende Haltung eingenommen: Mehrdeutigkeiten wie die im bereitgestellten Code werden konsequent zugunsten von Funktionsdeklarationen aufgelöst.

Das ist unbedingt zu beachten dass Initialisierer mit leeren Klammern in bestimmten Szenarien zulässig sind, z. B. in neuen Ausdrücken oder beim Erstellen eines mit einem Wert initialisierten temporären Objekts. Bei Konstruktordeklarationen ohne Argumente schreibt der Standard jedoch strikt das Weglassen von Klammern vor. Dies sorgt für Klarheit und verhindert mögliche Verwirrungen, die durch syntaktische Mehrdeutigkeiten entstehen können.

Das obige ist der detaillierte Inhalt vonWarum kann ich in meiner Konstruktordeklaration keine Klammern ohne Argumente verwenden?. 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