next up previous contents
Next: Retourner une référence Up: Références Previous: Modifier les paramètres :

Éviter la recopie :

Un inconvénient du passage par référence est que si les paramètres sont de tailles importantes, la recopie est coûteuse. Un inconvénient du passage par référence peut être qu'il laisse la possibilité pour une fonction de modifier les paramètres d'appel. En C++, grâce aux références sur les constantes, on peut interdire une telle modification . Dans le cas d'une référence sur constante, une variable temporaire sera créée. Tout en gardant les avantages du passage par valeur (non modification des paramètres d'appel) le passage par référence permet ainsi d éviter les recopies sur la pile d'exécution:

#define MAX 1000
struct tab{
  int t[MAX];          	// gros tableau!!
  tab(int j){ int i;  	// initialisation
    for(i=0;i<MAX;i++)t[i]=j;}
};
const tab t0=tab(0);    // constante tab
int bad(tab t1){        // mauvais code
  return t1.t[0];
}
int g(tab & t1){        // pas de recopie
  return t1.t[0];       // mais ne peut s'appliquer
                        // à des constantes
}
int good(const tab &t1){ // oui
  return t1.t[0];
}
/*...*/
void main(){
	bad(t0);                // oui
//	g(t0);               interdit
	good(t0);               // oui 
}



Mon Oct 20 14:02:48 MET 1997