Heim >Backend-Entwicklung >C++ >Wie funktioniert die Konstruktorverkettung in C?

Wie funktioniert die Konstruktorverkettung in C?

Susan Sarandon
Susan SarandonOriginal
2025-01-01 14:41:09232Durchsuche

How Does Constructor Chaining Work in C  ?

Konstruktorverkettung in C

Konstruktorverkettung, bei der ein Konstruktor einen anderen Konstruktor aus seinem Körper heraus aufruft, ist in C# eine gängige Praxis zur Initialisierung Objekte mit unterschiedlichen Parametern. C hat eine ähnliche Funktion namens delegierende Konstruktoren.

C 11 und höher

In C 11 und späteren Versionen können delegierende Konstruktoren verwendet werden, um eine Konstruktorverkettung zu erreichen. Die Syntax lautet:

class Foo {
public:
  Foo(char x, int y);
  Foo(int y) : Foo('a', y) {}
};

Der Foo(int y)-Konstruktor ruft den Foo(char x, int y)-Konstruktor mit dem Standardwert für x auf.

C 03 und Frühere Versionen

C 03 unterstützt keine delegierenden Konstruktoren. Es gibt jedoch zwei Simulationsmethoden:

  • Standardparameter: Kombinieren mehrerer Konstruktoren mit Standardparameterwerten.
class Foo {
public:
  Foo(char x, int y = 0);  // combines constructors (char) and (char, int)
  // ...
};
  • Initialisierungsmethode: Gemeinsamer Code zwischen Konstruktoren durch eine private Initialisierung Methode.
class Foo {
public:
  Foo(char x);
  Foo(char x, int y);
  // ...
private:
  void init(char x, int y);
};

Foo::Foo(char x)
{
  init(x, x + 7);
  // ...
}

Foo::Foo(char x, int y)
{
  init(x, y);
  // ...
}

void Foo::init(char x, int y)
{
  // ...
}

Das obige ist der detaillierte Inhalt vonWie funktioniert die Konstruktorverkettung in C?. 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