Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Liste d'initialisation du constructeur C++ :pourquoi et comment l'utiliser

Lors de l'instanciation d'objets, les constructeurs gèrent souvent l'initialisation des variables membres. Pour ces membres, une liste d'initialisation des constructeurs fournit un moyen abrégé et efficace de leur initialisation avant l'exécution du corps du constructeur. Outre les performances, cela est parfois également obligatoire en raison de variables const ou de membres d'une classe de base.

Qu'est-ce qu'une liste d'initialisation de constructeur ?

Une liste d'initialisation de constructeur est une procédure permettant d'initialiser directement les variables membres. Par conséquent, aucun constructeur par défaut n'est copié puis attribué.

Syntaxe

La syntaxe suivante d'initialisation de la liste des constructeurs est la suivante−

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

Ici, member1 et member2 sont initialisés avec param1 et param2 avant l'exécution du corps du constructeur.

Exemple de liste d'initialisation de constructeur

Voici un exemple simple montrant comment utiliser une liste d'initialisation.

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

Sortie

Name: Navya, Age: 20

Pourquoi utiliser les listes d'initialisation de constructeur ?

Cas particuliers

Dans ce qui suit, nous discuterons de quelques cas particuliers pour la liste d'initialisation du constructeur -

Membres const ou de référence

Les variables Const et les membres de référence ne peuvent pas être réaffectés, ils doivent donc être initialisés dans une liste d'initialisation,

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

Initialisation de la classe de base

Lorsqu'une classe dérivée hérite d'une classe de base, vous pouvez utiliser une liste d'initialisation pour appeler le constructeur de la classe de base,

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

Langue C

  1. C# - Encapsulation
  2. Priorité et associativité des opérateurs C#
  3. Mot-clé statique C#
  4. Classe de stockage C
  5. Gestion des fichiers C++ :comment ouvrir, écrire, lire et fermer des fichiers en C++
  6. Variable C, types de données, constantes
  7. C - Tableaux
  8. Syndicats C
  9. Type de données Char C++ avec exemples