Als C#-Entwickler sind Sie möglicherweise mit der Möglichkeit vertraut, andere Konstruktoren innerhalb eines Konstruktors aufzurufen. In C# wird dies als Konstruktorverkettung bezeichnet. Gibt es eine ähnliche Funktion in C?
In C 11 und späteren Versionen wird die Konstruktorverkettung durch delegierende Konstruktoren unterstützt. Die Syntax unterscheidet sich geringfügig von C#:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
In diesem Beispiel delegiert der Konstruktor Foo(int y) an den Konstruktor Foo(char x, int y), wobei x auf „a“ gesetzt ist.
Leider wird die Konstruktorverkettung in C 03 nicht direkt unterstützt. Es gibt jedoch zwei Hauptmerkmale Möglichkeiten zur Simulation dieses Verhaltens:
1. Standardparameter:
Sie können mehrere Konstruktoren kombinieren, indem Sie Standardwerte für einige Parameter angeben:
class Foo { public: Foo(char x, int y = 0); // Combines constructors Foo(char) and Foo(char, int) };
2. Init-Methode:
Extrahieren Sie den allgemeinen Code in eine private 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, int(x) + 7) {} Foo::Foo(char x, int y) : init(x, y) {} void Foo::init(char x, int y) { // Shared initialization code }
Diese Techniken bieten zwar keine echte Konstruktorverkettung, ermöglichen aber eine ähnliche Funktionalität.
Das obige ist der detaillierte Inhalt vonUnterstützt C die Konstruktorverkettung und wie ist der Vergleich mit C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!