Oui, les paramètres transmis par valeur sont copiés. Cependant, vous pouvez également passer des variables par référence. Une référence est un alias, ce qui fait du paramètre un alias à une variable plutôt qu'une copie. Par exemple:
void foo(int x) {}
void bar(int& x) {}
int i;
foo(i); // copies i, foo works with a copy
bar(i); // aliases i, bar works directly on i
Si vous marquez comme const, vous avez une lecture seule alias:
void baz(const int&);
baz(i); // aliases i, baz reads-only i
En général, toujours passer par const-référence. Lorsque vous avez besoin de modifier l'alias, supprimez le const. Et enfin, quand vous avez besoin d'une copie, il suffit de passer par la valeur. *
* Et en règle générale, les types fondamentaux (int, char *, etc.) et les types avec sizeof(T) < sizeof(void*)
doivent être transmis par valeur à la place de const-référence, parce que leur taille est assez petite pour que la copie soit plus rapide que l'aliasing.
Quel manuel C++ utilisez-vous qui ne couvre pas cela en détail? –
Quel manuel? – Faken
C'est le problème. :) Vous devriez apprendre d'un bon manuel, nous avons une grande liste ici: http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – GManNickG