Salut,
Tel qu'il est écrit, le code de la fonction échange ne fera strictement rien de visible dans la fonction main.
Pourquoi
Parce que les arguments fournis à echange sont transmis par valeur, et donc que les variables a, b, et c de la fonction échange sont différentes des variables a et b de la fonction main.
Pour que l'échange se fasse effectivement, il faudrait passer les argument par... référence, afin que les variable identifiées par a et b dans echange soient effectivement des alias des variable respectives dans main.
Pour ce qui concerne l'écriture dans la boucle, étant donné que l'échange n'a pas eu d'effet, la boucle sera répétée avec a ayant pour valeur 0 et 1, vu que la boucle ne doit que tant que a est exclusivement plus petit que b.
Pour l'écriture qui a lieu après la boucle, a vaudra 2 étant donné que l'on est justement sorti de la boucle parce que a n'était plus inférieur à b.
Enfin, ce n'est pas parce que l'on crée une fonction libre que l'on écrit forcément du C with classes...
Un exemple bien plus typique de C with classes serait plutôt de créer une classe et d'utiliser l'allocation dynamique au lieu des classes collections fournies par C++, le pointeur FILE et les fonctions associées au lieu des classes *fstream, les fonction d'affichage/d'introduction C au lieu des variables cout/cin ou des pointeurs dans tous les sens pour le passage de paramètres (liste non exhaustive).
Ici, nous ne travaillons, effectivement, pas en orienté objet, mais comme C++ est un langage multi paradigmes ce n'est clairement ni erreur, ni une raison pour comparer le code à du C with classes.
Je te rappelle à ce sujet qu'il est d'ailleurs très fréquent d'utiliser des fonctions libres en C++, par exemple, pour tous les opérateurs mathématiques commutatif, ou pour les opérateurs de flux

Partager