Kann ich die Konstruktorverkettung in C nutzen?
Die Konstruktorverkettung, ein vertrautes Konzept für C#-Entwickler, ermöglicht die Ausführung eines Konstruktors von ein anderer. Dies bietet eine effiziente Möglichkeit, Objekte in einer übergeordneten Klasse und ihren abgeleiteten Klassen zu initialisieren.
C 11 und höher: Konstruktorverkettung
In C 11 und späteren Versionen Konstruktor Die Verkettung wird durch delegierende Konstruktoren unterstützt. Die Syntax weicht leicht von C# ab:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
Dieser Code definiert zwei Konstruktoren: einen, der (char x, int y) akzeptiert, und einen anderen, der (int y) akzeptiert. Der zweite Konstruktor ruft den ersten Konstruktor mithilfe des Zeigers this auf, um x auf „a“ zu initialisieren.
C 03: Konstruktorsimulation
Leider unterstützt C 03 nicht nativ Konstruktorverkettung. Allerdings können zwei Methoden seine Wirkung simulieren:
class Foo { public: Foo(char x, int y = 0); // This combines (char) and (char, int) constructors. };
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : Foo(x, int(x) + 7) {} // Calls init(x, int(x) + 7). Foo::Foo(char x, int y) : Foo(x, y) {} // Calls init(x, y). void Foo::init(char x, int y) {}
Indem Sie für weitere Anleitungen auf die C-FAQ verweisen, können Sie mithilfe dieser Methoden die Konstruktorverkettung in C 03 effektiv simulieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Konstruktorverkettung in C implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!