In C# ist die Möglichkeit, Konstruktoren in einer bestimmten Reihenfolge aufzurufen, eine gängige Praxis. Als C#-Entwickler, der diese Funktionalität in C replizieren möchte, stellt sich die Frage: Kann dies durch Konstruktorverkettung erreicht werden?
Freue dich! C 11 führt eine Funktion ein, die als „Delegieren von Konstruktoren“ bekannt ist und die Konstruktorverkettung in C# nachahmt. So steht es geschrieben:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
Obwohl es in C 03 keine direkte Konstruktorverkettung gibt, gibt es zwei Problemumgehungen:
Standardparameter: Kombinieren Sie Konstruktoren mit Standardparametern Parameter.
class Foo { public: Foo(char x, int y=0); // Combines two constructors (char) and (char, int) };
Init-Methode:Verwenden Sie eine gemeinsame Initialisierungsmethode.
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) {}
Zusammenfassend lässt sich sagen, dass C 11 eine echte Konstruktorverkettung ermöglicht, während C 03 Problemumgehungen bietet wie Standardparameter und Init-Methoden, um eine ähnliche Funktionalität zu erreichen.
Das obige ist der detaillierte Inhalt vonKönnen C-Konstruktoren verkettet werden und wenn ja, wie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!