no save
Assistance
Achat
News

Forum | programmation
operator et pointeur [C++]
mamiemando, le ven. 26 janv. 2007 à 10:14:55
Tout à fait d'accord avec charsniper mais en fait c'est presque bon :
matrix operator*(matrix& b)const {
matrix result(.......);
//...
return result
}

En fait si tu calcule A*B tu es effectivement de créer une matrice C=A*B et donc de l'allouer (car tu ne veux modifier ni A, ni B). Cependant qui dit new dit delete, et ici le delete n'était jamais fait (donc la mémoire occupée par C jamais rendue).

Ici tu ne peux pas retourner une référence, ça n'a pas de sens. Retourner une référence n'a de sens que si c'est une variable qui est déjà créée. Typiquement quand tu passes une variable en paramètre, on passe en générale la référence car ça évite de recopier dans la pile la variable passée en paramètre. Ici tu es de toutes façons condamné à créer une nouvelle variable de retour C donc... on la retourne directement :)

Au niveau allocation c'est mieux, car la variable de retour sera déclarée sans new et sera donc automatiquement détruite à la fin du scope ou elle est déclarée :

matrix A,B;
//Initialisation de A et B
//...

// Calcul de C = A*B
{
int x=69;
matrix C = A*B;
//...
} // C est détruite en arrivant à cette accolade au même titre que x
Bonne chance
PrécédentChar Snipeur
janv. 07
Benur29
janv. 07
Suivant
REPONSES
blurk
mai 04
Char Snipeur
mai 04
marvirouge
mai 04
marvinrouge
mai 04
marvinrouge
mai 04
Benur29
janv. 07
Char Snipeur
janv. 07
Benur29
janv. 07
Char Snipeur
janv. 07
mamiemando
janv. 07
Version Web
Réalisé par RedShift
no save