Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++ Konstruktor-Initialisierungsliste: Warum und wie man sie einsetzt

Beim Instanziieren von Objekten übernehmen Konstruktoren oft die Initialisierung von Membervariablen. Für solche Member bietet eine Initialisierungsliste für Konstruktoren einen prägnanten und effizienten Weg, sie vor Ausführung des Konstruktorkörpers zu initialisieren. Abgesehen von Performance ist sie manchmal zwingend – bei const-Variablen oder Membern einer Basisklasse.

Was ist eine Konstruktor-Initialisierungsliste?

Eine Konstruktor-Initialisierungsliste ist ein Verfahren, Membervariablen direkt zu initialisieren, sodass kein Default-Konstruktor aufgerufen und dann zugewiesen wird.

Syntax

Folgender Syntax für die Initialisierungsliste:

 KlassenName(Typ1 Param1, Typ2 Param2) : Member1(Param1), Member2(Param2) { // Konstruktorkörper } 

Hier werden Member1 und Member2 mit Param1 und Param2 initialisiert, bevor der Konstruktorkörper läuft.

Beispiel: Konstruktor-Initialisierungsliste

Ein einfaches Beispiel zur Demonstration:

 #include <iostream> #include <string> class Student { public: Student(const std::string& name, int age) : name(name), age(age) {} void display() const { std::cout << "Name: " << name << ", Age: " << age << "\n"; } private: std::string name; int age; }; int main() { Student s("Navya", 20); s.display(); return 0; } 

Ausgabe

 Name: Navya, Age: 20 

Warum Konstruktor-Initialisierungslisten nutzen?

Spezielle Fälle

Im Folgenden besprechen wir einige Spezialfälle für Konstruktor-Initialisierungslisten:

Const- oder Referenzmember

Const-Variablen und Referenzmember können nicht neu zugewiesen werden, daher müssen sie in einer Initialisierungsliste initialisiert werden.

 class Config { public: Config(const std::string& product, const int & model) : product(product), model(model) {} private: const std::string product; const int & model; }; 

Basisklassen-Initialisierung

Wenn eine abgeleitete Klasse von einer Basisklasse erbt, können Sie eine Initialisierungsliste nutzen, um den Basisklassenkonstruktor aufzurufen.

 class Base { public: Base(int value) : baseValue(value) {} protected: int baseValue; }; class Derived : public Base { public: Derived(int value, int extra) : Base(value), extraValue(extra) {} private: int extraValue; }; 

C Sprache

  1. C# Ausdrücke, Anweisungen & Blöcke: Umfassender Leitfaden mit Beispielen
  2. C++ Vererbungsmodelle: Mehrfach, Mehrstufig, Hierarchisch
  3. C# Operatorüberladung: Benutzerdefinierte Operatoren für eigene Typen
  4. Coded UI Test Automation Framework: Umfassender Einsteigerleitfaden
  5. C++ Datei-I/O: Lesen & Schreiben mit fstream
  6. Dynamische Speicherallokation in C: malloc, calloc, realloc & free meistern
  7. C Bedingte Anweisungen meistern: IF, IF-ELSE und verschachtelte IF-ELSE erklärt
  8. C-Structs und Zeiger meistern: Praxisleitfaden
  9. Die C++ break-Anweisung meistern
  10. C Typecasting: Implizite und explizite Konvertierungen mit Code-Beispielen meistern