Là, en revanche, pour un attribut de classe, ça dépend.
Si c'est un objet qui doit être dupliqué, alors tu mets l'objet. Ex: std::string.
Code C/C++ :
class Objet
{
public :
Objet()
{
}
void setObject(const std::string& autreObjet)
{
_autreObjet = autreObjet;
}
~Objet() {};
private :
std::string _autreObjet;
}
Si c'est un objet dont tu dois juste avoir une référence dessus, donc pas de copie de celui-ci, alors tu mets un pointeur.
Si tu ne fais que pointer dessus, ce n'est pas à toi de détruire la chaîne.
Code C/C++ :
class Objet
{
public :
Objet()
: _autreObjet(0)
{
}
void setObject(const autreObjet& autreObjet)
{
_autreObjet = autreObjet;
}
~Objet() {};
private :
AutreObjet* _autreObjet;
}
Si c'est un objet essentiel à la construction de la classe, tu peux utiliser une référence:
Code C/C++ :
class Objet
{
public :
Objet(const AutreObjet& autreObjet)
: _autreObjet(autreObjet);
{
}
~Objet() {};
private :
AutreObjet& _autreObjet;
}
Tu peux mettre un pointeur (et donc gérer la destruction de celui-ci), si tu ne peux faire autrement.
Ex: Construction d'une classe mise en attribut en dehors du constructeur.
Code C/C++ :
class Objet
{
public :
Objet()
: _autreObjet(0) // On l'initialise tout de même !
{
}
void setObject(int nb)
{
delete _autreObjet;
_autreObjet = new autreObjet(nb);
}
~Objet() { delete _autreObjet;};
private :
AutreObjet* _autreObjet;
}
Ce n'est pas une règle d'or, et il y a sûrement des cas particuliers. Mais d'une manière générale, dès que tu peux éviter les pointeurs (et les new/delete) fait le !
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question