Heim  >  Artikel  >  Backend-Entwicklung  >  Konstruktorvererbung in C 11: Wie funktioniert es?

Konstruktorvererbung in C 11: Wie funktioniert es?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-07 01:49:03554Durchsuche

Constructor Inheritance in C  11: How Does It Work?

Konstruktoren in C 11 erben

In C 11 ermöglicht die Konstruktorvererbung einer abgeleiteten Klasse, implizit Konstruktoren von ihrer Basisklasse zu erben. Dies wird durch das Schlüsselwort using erreicht, das angibt, dass die abgeleitete Klasse die Konstruktoren der Basisklasse verwenden soll.

Syntax:

struct B {
  B(int); // Normal constructor 1
  B(string); // Normal constructor 2
};

struct D : B {
  using B::B; // Inherit constructors from B
};

Auswirkungen :

  • Die abgeleitete Klasse D hat jetzt die geerbten Konstruktoren:

    • D::D(int);
    • D ::D(string);
  • Mitgliedsvariablen von D werden standardmäßig von diesen geerbten Konstruktoren initialisiert.

Anwendungen:

Konstruktorvererbung ist in den folgenden Szenarien nützlich:

  • Einsparung von Tippaufwand:Dadurch entfällt die Notwendigkeit, Konstruktoren in der abgeleiteten Klasse manuell zu definieren.
  • Sicherstellen der Basisklasseninitialisierung: Es garantiert, dass die Basisklasse ordnungsgemäß initialisiert wird.

Ausführliche Erklärung:

Die Standardbibliothek definiert die erbenden Konstruktoren wie folgt:

D::D(int x) : B(x) {}
D::D(string s) : B(s) {}

Das bedeutet, dass, wenn eine Instanz der abgeleiteten Klasse D erstellt wird, sie den entsprechenden Konstruktor der Basisklasse B aufruft, um ihre Basismitglieder zu initialisieren.

Das obige ist der detaillierte Inhalt vonKonstruktorvererbung in C 11: Wie funktioniert es?. 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