Heim >Backend-Entwicklung >C++ >Wie funktioniert die Doppelpunkt-Syntax (:) in C-Konstruktoren für die Elementinitialisierung und Basisklassenaufrufe?

Wie funktioniert die Doppelpunkt-Syntax (:) in C-Konstruktoren für die Elementinitialisierung und Basisklassenaufrufe?

DDD
DDDOriginal
2024-12-02 05:22:14180Durchsuche

How Does the Colon (:) Syntax Work in C   Constructors for Member Initialization and Base Class Calls?

Die Doppelpunktsyntax in Konstruktoren verstehen

In C sind Konstruktoren Funktionen, die Objekte bei der Erstellung initialisieren. Während Konstruktornamen normalerweise mit dem Klassennamen übereinstimmen, können sie eine eindeutige Initialisierungssyntax haben. Ein bemerkenswerter Aspekt der Konstruktor-Syntax ist die Verwendung eines Doppelpunkts (:), gefolgt von einer Argumentliste.

Diese Syntax, bekannt als Member-Initialisierungsliste, dient zwei Hauptzwecken:

  • Basisklassenkonstruktoren aufrufen:
    Wenn eine abgeleitete Klasse erstellt wird, müssen auch ihre Basisklassen initialisiert werden. Mit der Member-Initialisierungsliste können Sie den Konstruktor der Basisklasse aufrufen und bei Bedarf Argumente übergeben.
  • Datenelemente initialisieren:
    Die Member-Initialisierungsliste kann auch zum Initialisieren von Nicht-Elementen verwendet werden -statische Datenmitglieder der Klasse. Dies erfolgt durch Angabe des Datenelementnamens, gefolgt von einem Zuweisungsoperator und einem Argument.

Betrachten Sie beispielsweise den folgenden Code:

class demo 
{
private:
    unsigned char len, *dat;

public:
    demo(unsigned char le = 5, unsigned char default) : len(le) 
    { 
        dat = new char[len];                                      
        for (int i = 0; i <= le; i++)                             
            dat[i] = default;
    }

    void ~demo(void) 
    {                                            
        delete [] *dat;                                           
    }
};

In diesem Beispiel ist der Der Konstruktor hat zwei Parameter, le und default. Die Member-Initialisierungsliste: len(le) weist den Wert von le dem len-Datenelement zu.

Zusätzlich gilt in der abgeleiteten Klasse newdemo:

class newdemo : public demo 
{
private:
    int *dat1;

public:
    newdemo(void) : demo(0, 0)
    {
     *dat1 = 0;                                                   
     return 0;                                                    
    }
};

Die Member-Initialisierungsliste: demo( 0, 0) ruft den Basisklassenkonstruktor demo mit den Argumenten 0 und 0 auf und initialisiert die Len- und Standarddatenelemente der Basis Klasse.

Elementinitialisiererlisten sind eine bequeme und effiziente Möglichkeit, Datenelemente zu initialisieren und Basisklassenkonstruktoren aufzurufen, wodurch die Sicherheit und Klarheit Ihres Codes erhöht wird.

Das obige ist der detaillierte Inhalt vonWie funktioniert die Doppelpunkt-Syntax (:) in C-Konstruktoren für die Elementinitialisierung und Basisklassenaufrufe?. 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