Heim >Backend-Entwicklung >C++ >Wie funktionieren Elementinitialisierungslisten in C-Konstruktoren?

Wie funktionieren Elementinitialisierungslisten in C-Konstruktoren?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 06:35:14570Durchsuche

How Do Member Initialization Lists Work in C   Constructors?

Member-Initialisierungslisten in Konstruktoren

In C ist ein Doppelpunkt gefolgt von einem Ausdruck nach einem Konstruktor Teil einer Member-Initialisierungsliste. Es dient zwei Hauptzwecken:

1. Aufrufen von Basisklassenkonstruktoren

In abgeleiteten Klassen kann die Elementinitialisierungsliste verwendet werden, um die Argumente für den Aufruf des Konstruktors der Basisklasse anzugeben. Zum Beispiel im folgenden Code:

class demo
{
public:
    demo(unsigned char le = 5, unsigned char default) : len(le)
    {
        // Body of the constructor
    }
};

class newdemo : public demo
{
public:
    newdemo() : demo(0, 0)
    {
        // Body of derived class constructor
    }
};

Die Syntax : demo(0, 0) im newdemo-Konstruktor ruft den Konstruktor der Demo-Basisklasse mit den Argumenten 0 und 0 auf.

2. Datenelemente initialisieren

Vor der Ausführung des Konstruktorkörpers kann die Elementinitialisierungsliste zum Initialisieren von Datenelementen der Klasse verwendet werden. Dies ist besonders nützlich für const-Mitglieder, die nicht im Konstruktorkörper zugewiesen werden können. Zum Beispiel:

class Demo
{
public:
    Demo(int& val) : m_val(val)
    {
        // Body of constructor
    }

private:
    const int& m_val;
};

In diesem Beispiel initialisiert die Syntax: m_val(val) das const-Referenzdatenelement m_val mit dem Wert des Konstruktorarguments val.

Das obige ist der detaillierte Inhalt vonWie funktionieren Elementinitialisierungslisten in C-Konstruktoren?. 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