Heim > Backend-Entwicklung > C++ > Können C-Konstruktoren verkettet werden und wenn ja, wie?

Können C-Konstruktoren verkettet werden und wenn ja, wie?

Mary-Kate Olsen
Freigeben: 2024-12-21 02:58:13
Original
231 Leute haben es durchsucht

Can C   Constructors Be Chained, and If So, How?

Kann die Konstruktorverkettung in C durchgeführt werden?

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?

C 11 und höher

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) {}
};
Nach dem Login kopieren

C 03: Ein anderer Ansatz

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)
};
Nach dem Login kopieren

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) {}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage