Donc imaginons une classe lambda avec plusieurs variables membres qui sont des pointeurs char* (oui, String tout ça, je sais, mais ce n'est pas le but ici).
Ces pointeurs son mis à null dans les constructeurs, et puis j'appelle les différents setters. Dans les setters de chaque variable de type pointeur, je commence par faire un delete (le pointeur sera toujours valide ou null normalement) puis un new (ce sera plus lisible dans le code je pense).
Un exemple de classe avec deux pointeurs char* (nom et prenom) et deux entiers (age et taille):
Personne::Personne(){
cerr << "[Personne] Constructeur par défaut" << endl;
nom = NULL;
prenom = NULL;
setNom(NULL);
setPrenom(NULL);
setAge(18);
setTaille(175);
}
un setter typique:
void Personne::setNom(const char* const nom){
delete this->nom;
//QUESTION: serait-il utile de mettre le pointeur à null ici? des explications?
this->nom = new char[nom ? strlen(nom) : 0 + 1];
if(nom)
strcpy(this->nom, nom);
else
*this->nom = 0;
}












Retour en haut















