Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ Constructor-initialisatielijst:waarom en hoe het te gebruiken

Bij het instantiëren van objecten verzorgen constructors vaak de initialisatie van lidvariabelen. Voor dergelijke leden biedt een initialisatielijst voor constructors een verkorte en efficiënte manier om hun initialisatie uit te voeren voordat de body van de constructor wordt uitgevoerd. Naast de prestaties is het soms ook verplicht vanwege const-variabelen of leden van een basisklasse.

Wat is een constructorinitialisatielijst?

Een constructor-initialisatielijst is een procedure om lidvariabelen rechtstreeks te initialiseren. Er is dus geen standaardconstructor die wordt gekopieerd en vervolgens toegewezen.

Syntaxis

De volgende syntaxis voor het initialiseren van de constructorlijst is als volgt:

ClassName(type1 param1, type2 param2) : member1(param1), member2(param2) {
 // Constructor body
 
}

Hier worden member1 en member2 geïnitialiseerd met param1 en param2 voordat de constructorbody wordt uitgevoerd.

Voorbeeld van constructorinitialisatielijst

Hier is een eenvoudig voorbeeld dat laat zien hoe u een initialisatielijst gebruikt.

#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;
}

Uitvoer

Name: Navya, Age: 20

Waarom constructorinitialisatielijsten gebruiken?

  • Om standaardinitialisatie gevolgd door nieuwe toewijzing te voorkomen, om tijd en middelen te besparen.
  • Het is verplicht voor bepaalde typen const-variabelen, referentieleden en leden van de basisklasse.
  • Het bewaart alle initialisatielogica op één plek, gescheiden van de constructorbody.

Speciale gevallen

Hieronder zullen we enkele speciale gevallen bespreken voor de initialisatielijst van de constructor −

Const- of referentieleden

Const-variabelen en referentieleden kunnen niet opnieuw worden toegewezen, dus moeten ze worden geïnitialiseerd in een initialisatielijst,

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

Initialisatie van basisklasse

Wanneer een afgeleide klasse erft van een basisklasse, kunt u een initialisatielijst gebruiken om de basisklasseconstructor aan te roepen,

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 Taal

  1. C breken en doorgaan
  2. C - Bitvelden
  3. Soorten door de gebruiker gedefinieerde functies in C-programmering
  4. C Bestandsverwerking
  5. C# hashtabel met voorbeelden
  6. C++ overbelasting (operator en functie)
  7. C Pass-adressen en -wijzers
  8. Beheers geneste lussen in C#:For, While en Do-While uitgelegd
  9. Karakteraanwijzers en functiegebruik beheersen in C
  10. C# Windows Forms-toepassingshandleiding met voorbeeld
  11. C opsommingen