C++ les classes les constructeurs appelés

Fermé
wawa - 8 oct. 2008 à 21:27
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 oct. 2008 à 09:43
Bonjour tout le monde!!!
Comme je pense que vous l'avez compris dans le titre je fais une classe et je ne comprend pas des fois pourquoi le constructeur est appelé... JE NE LUI AI RIEN DEMANDE!!!
Par exemple dans la fonction qui suit, le destructeur est appelé deux fois:


class Signal {
public:
int mLongueur;
short *mSignal;


Signal operator= (Signal S1){
int i;
mLongueur=S1.mLongueur;
mSignal=new short[S1.mLongueur];
for (i=0;i<S1.mLongueur;i++){
mSignal[i]=S1.mSignal[i];}
cout<<"opertaur=utilise"<<endl;
}


int main(int argc, char *argv[])
{
......

rr=g;}


ici rr et gg sont deux objet de la classe signal

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 oct. 2008 à 09:43
lorsque tu fait un appel à "Signal operator= (Signal S1)" tu fait une copie de ta variable 'g', c'est comme si tu écrivait :
Signal S1(g)
tu utilise le constructeur de copie par défaut. Je te conseil plutôt de faire :
Signal operator= (Signal& S1)
ou même mieux dans ton cas :
Signal operator= (const Signal& S1)
En faisant un passage par référence tu évite la création et la copie d'un nouvel objet.
0