Question : passage de parametre et methode avec retour de valeur.

gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009 - 22 nov. 2005 à 10:38
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009 - 22 nov. 2005 à 21:51
y a t'il une difference entre:

int toto(int a)
{
return a;
}

et

void toto(int b,int&a)
{
b = a
}

parce que moi je pense que c'est la meme chose.
et pourquoi utiliser plus l'une ou l'autre methode ?

gege

6 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
22 nov. 2005 à 10:53
Pour ta première fonction:int x toto(4);> ca marche

alors que avec ta deuxième fonction non.
De plus, tu as du te planter, c'est plutot:
void toto(int & b,int a)
{
b = a
}

Mais en gros, je vois pas le rapport entre ces deux fonctions, pour moi elle sont totalement différentes.
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
22 nov. 2005 à 11:20
exemple concret:

2 methode d'une class CTest :


===========================
cpp
void CTest::Ajout(int a, int&b)
{
b = a+2;
}
int CTest::Ajout2(int a)
{
return a+2;
}
===========================


===========================
h
class CTest
{
public:
CTest();
virtual ~CTest();


void Ajout(int a, int&b);
int Ajout2(int a);
};
===========================

Utilisation (je rempli un edit box avec une puis l'autre methode) et le resultat est le meme, alors la difference est où ????????

CTest Test; int res;
// Test.Ajout(2,res);
res = Test.Ajout2(2);
m_edit = res;
UpdateData(false);

gege
0
jeromedu94 Messages postés 83 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 10 mars 2006
22 nov. 2005 à 12:44
En effet le résultat est le même mais la manière d'y arriver est différente.

Dans le premier cas, tu transmet la valeur de a et l'adresse de res, dans ce cas la variable intermiédiare b dans ta procédure à la même adresse que res, donc en modifiant b, tu modifies res.


Alors que dans le deuxième cas, tu transmet juste la valeur de a, et res prend la valeur de retour de la fonction.
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
22 nov. 2005 à 12:54
ok, mais alors c'est simplement l'habitude du programmeur d'utiliser tel ou tel methode, ou alors y a t'il une subtile difference (memoire, rapidité ....)

parce que moi , je me suis rendu compte que j'utilisais tantot la premiere , tantot la deuxieme methode , mais je ne sais pas pourquoi.

gege
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeromedu94 Messages postés 83 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 10 mars 2006
22 nov. 2005 à 19:11
je saurai pas te dire s'il y a une différence en terme de rapidité, en terme de mémoire ou de rapidité.

Mais si par exemple tu veux créer une fonction qui renvoi plusieurs valeurs, tu peux pas utiliser la méthode 2, dans ce cas tu utilises la méthode 1, en transmettant l'adresse de plusieurs variables ou d'un tableau.
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
22 nov. 2005 à 21:51
oui je c'est vrai.

ma question etait du "pinaillage".

gege
0
Rejoignez-nous