Initialisation des membres de données Const : un guide complet
Introduction :
Comprendre l'initialisation des membres de données constants en C peuvent être déroutants. Cet article vise à clarifier cet aspect en traitant d'une erreur courante et en fournissant une explication détaillée du processus.
Erreur rencontrée :
Considérez l'extrait de code suivant :
#include <iostream> using namespace std; class T1 { const int t = 100; public: T1() { cout << "T1 constructor: " << t << endl; } };
Lors de la tentative d'initialisation du membre de données const t dans le constructeur de classe, l'erreur suivante se produit :
test.cpp:21: error: ISO C++ forbids initialization of member ‘t’ test.cpp:21: error: making ‘t’ static
Comprendre l'erreur :
L'erreur provient de la restriction du langage C qui interdit l'initialisation des membres de données const dans la définition de classe. En effet, les variables const nécessitent une définition unique, ce qui ne peut pas être garanti lorsqu'elles sont incluses dans plusieurs unités de traduction.
Comment initialiser les membres de données Const :
Pour initialiser une const membre de données, il doit être défini en dehors de la définition de la classe. Ceci peut être réalisé via la liste d'initialisation de classe :
T1() : t(100) {}
Dans la liste d'initialisation, t se voit attribuer la valeur de 100 avant que l'initialisation de la classe ne se produise. Cela garantit que le membre de données const est initialisé lors de la création de l'objet.
Conclusion :
L'initialisation des membres de données const nécessite le respect de règles de langage spécifiques. En les définissant en dehors de la définition de la classe et en utilisant la liste d'initialisation, les programmeurs peuvent initialiser efficacement les membres de données const et éviter l'erreur susmentionnée.
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!