Maison  >  Article  >  développement back-end  >  Erreur de syntaxe C++ : les variables membres doivent être initialisées dans la liste d'initialisation du constructeur, comment y faire face ?

Erreur de syntaxe C++ : les variables membres doivent être initialisées dans la liste d'initialisation du constructeur, comment y faire face ?

王林
王林original
2023-08-21 22:46:451210parcourir

Lors de la programmation en C++, nous rencontrons parfois une telle erreur de compilation : "Les variables membres doivent être initialisées dans la liste d'initialisation du constructeur." Cette erreur se produit généralement lorsque les variables membres doivent être initialisées dans le constructeur d'une classe.

Alors, comment devrions-nous gérer de telles erreurs ? Cet article fournira une introduction détaillée à l'initialisation des variables membres en C++ pour aider les lecteurs à mieux comprendre les principes et les méthodes d'initialisation des variables membres.

  1. Présentation

En C++, les variables membres d'une classe peuvent être initialisées des deux manières suivantes :

(1) Initialisées dans la liste d'initialisation du constructeur

(2) Initialisées dans le corps de la fonction du constructeur

Parmi elles, la première méthode est l'approche recommandée. Elle est non seulement efficace, mais garantit également que les variables membres ont été correctement initialisées avant que le constructeur ne commence à s'exécuter. La deuxième méthode est plus gênante, car elle nécessite l'initialisation de chaque variable membre et entraînera également plusieurs appels au constructeur.

  1. Liste d'initialisation du constructeur

La liste d'initialisation du constructeur fait référence à la partie du constructeur qui initialise les variables membres de la classe. La valeur initiale de la variable membre peut être spécifiée via la liste d'initialisation, évitant ainsi la difficulté d'attribuer des valeurs dans le corps de la fonction.

Lors de l'implémentation d'une classe, si nous devons initialiser les variables membres de la classe, nous devons l'initialiser dans la liste d'initialisation du constructeur.

Par exemple :

class Student {

private:

string name;

int age;

public:

Student(string name_, int age_): name(name_), age(age_){

}

};

Dans cet exemple, les deux variables membres name et age de la classe sont initialisées dans la liste d'initialisation du constructeur. Cela peut non seulement simplifier le code, mais également garantir l'initialisation correcte des variables membres.

  1. L'ordre d'initialisation des variables membres

Lorsque vous utilisez la liste d'initialisation du constructeur pour initialiser les variables membres, vous devez faire attention à l'ordre d'initialisation des variables membres. L'ordre d'initialisation des variables membres de la classe en C++ est lié à l'ordre dans lequel elles sont déclarées dans la classe.

Par exemple :

class A {

private:

int a;

int b;

public:

A(int _a, int _b): a(_a), b(_b){

}

};

Dans cet exemple, l'ordre d'initialisation des variables membres a et b est le même que l'ordre dans lequel elles sont déclarées dans la classe. Si l'ordre de a et b est inversé dans la liste d'initialisation du constructeur, une erreur de compilation se produira car la variable a n'est pas initialisée.

  1. Résumé

En programmation C++, l'initialisation des variables membres est très importante. Afin de garantir l'exactitude et l'efficacité du programme, nous devons toujours utiliser la liste d'initialisation du constructeur pour initialiser les variables membres de la classe afin d'éviter d'attribuer des valeurs dans le corps de la fonction. Puisque l’ordre d’initialisation des variables membres est lié à l’ordre dans lequel elles sont déclarées dans la classe, vous devez également faire attention à l’ordre d’initialisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn