Heim >Backend-Entwicklung >C++ >Wie instanziiere ich ein C-Klasse-Objekt korrekt und rufe seinen Konstruktor auf?

Wie instanziiere ich ein C-Klasse-Objekt korrekt und rufe seinen Konstruktor auf?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 08:07:35622Durchsuche

How Do I Correctly Instantiate a C   Class Object and Invoke Its Constructor?

Konstruktoraufrufe in C verstehen

In C sind Konstruktoren spezielle Mitgliedsfunktionen, die automatisch ausgeführt werden, wenn Objekte einer Klasse erstellt werden. Sie sind für die Initialisierung der Datenelemente des Objekts verantwortlich.

Das Problem

Betrachten Sie den folgenden Codeausschnitt:

#include <iostream>
using namespace std;

class Class {
    public:
        Class() {
            cout << "default constructor called" << endl;
        }

        ~Class() {
            cout << "destructor called" << endl;
        }
};

int main() {
    Class object(); // Incorrect syntax
}

Die main()-Funktion versucht, ein Objekt der Klasse Class zu erstellen. Der Konstruktor wird jedoch nicht wie erwartet aufgerufen.

Die Ursache

Das Problem liegt in der falschen Syntax, die in der Objektdeklaration verwendet wird:

Class object();

Diese Zeile deklariert eine Funktion namens object(), die ein Klassenobjekt zurückgibt. Um ein Objekt der Klasse Class korrekt zu erstellen, sollten wir die folgende Syntax verwenden:

Class object;

Die Lösung

Durch Entfernen der Klammern nach dem Klassennamen haben wir es richtig gemacht Deklarieren Sie ein Objekt der Klasse Class. Dieses Objekt ruft den Standardkonstruktor wie erwartet korrekt auf.

Zusätzliche Hinweise

  • Das ärgerlichste Parsen ist ein Phänomen in C, bei dem Code als interpretiert werden kann je nach Kontext entweder eine Funktionsdeklaration oder eine Klassendeklaration.
  • Um diese Mehrdeutigkeit zu vermeiden, wird empfohlen, die Faustregel zu befolgen: „Setzen Sie nach einem Klassennamen immer Klammern, um einen Konstruktoraufruf anzuzeigen.“

Das obige ist der detaillierte Inhalt vonWie instanziiere ich ein C-Klasse-Objekt korrekt und rufe seinen Konstruktor auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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