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 u Het Gebruikt

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

Wat is een Constructor Initialisatielijst?

Een constructor initialisatielijst is een procedure om lidvariabelen direct te initialiseren, dus er is geen standaardconstructor die wordt gekopieerd en daarna toegewezen.

Syntaxis

De volgende syntaxis voor initialisatie van 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 constructor-body draait.

Voorbeeld van Constructor Initialisatielijst

Hier is een eenvoudig voorbeeld dat demonstreert hoe een initialisatielijst te gebruiken.

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

Uitvoer

Naam: Navya, Leeftijd: 20

Waarom Constructor Initialisatielijsten Gebruiken?

  • Om standaardinitialisatie gevolgd door hertoewijzing te vermijden, om tijd en resources te besparen.
  • Het is verplicht voor bepaalde typen const-variabelen, referentieleden, en basisklasseleden.
  • Het houdt alle initialisatielogica op één plek, gescheiden van de constructor-body.

Speciale Gevallen

In het volgende bespreken we enkele speciale gevallen voor constructor initialisatielijst:

Const of Referentie Leden

Const-variabelen en referentieleden kunnen niet opnieuw toegewezen worden, dus ze moeten 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;
};

Basisklasse Initialisatie

Wanneer een afgeleide klasse erft van een basisklasse, kunt u een initialisatielijst gebruiken om de basisklasse constructor 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. Coded UI Test Automatiseringsframework: Een Uitgebreide Beginner's Gids
  2. Uitgebreide Handleiding voor het Opzetten van uw C++ Ontwikkelomgeving
  3. C Sleutelwoorden & Identifiers: Een Praktische Gids
  4. C++ Variabelentypen Uitgelegd: Geheugen, Limieten en Operaties
  5. malloc vs calloc: Belangrijkste verschillen uitgelegd met praktische voorbeelden
  6. C Bestands I/O Beheersen: Bestanden Maken, Openen, Lezen, Schrijven en Sluiten met Vertrouwen
  7. Beheersen van std::list in C++: Syntaxis, Functies & Praktische Voorbeelden
  8. Typeconversie in C# Begrijpen: Impliciete & Expliciete Casting Uitgelegd
  9. Variabelen in C# Begrijpen: Typen, Opslag en Gebruik
  10. Method overloading in C#: concepten, voorbeelden en best practices
  11. C++ while en do-while loops: herhaling in je code beheersen