Petite question en c++ , svp !!!

Résolu/Fermé
marwen109 Messages postés 63 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 26 mars 2012 - 3 oct. 2010 à 13:46
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 3 oct. 2010 à 15:40
Bonjour, a tous





soit le programme suivante:
#include<iostream.h>

void f(int, int=12);

void f(int a, int b)
{
cout<<"arugument 1 ="<<a<<endl;
cout<<"arugument 2 ="<<b<<endl;
}

void main()
{
int n=5;
int p=10;
f(n,p);
f(n);

}

il affiche :
1/   arugument 1 =5 
2/   arugument 2 =10
3/   arugument 1 =5
4/   arugument 2 =12


mon question est de savoir d'où il vient le 12 dans la ligne "4/" , je sais quelle vient de "int=12" mais comment ?? en principe "void f(int , int=12)" est indépendante
de la fonction void f(int a, int b)
{
....
}

tous ce que je veux, une explication ;) merci d'avance

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
Modifié par Pacorabanix le 3/10/2010 à 15:41
la ligne void f(int, int=12); est juste le "prototype" de la fonction f.

Il est là pour résumer ce qu'est la fonction f et quels arguments elle prend.

le compilateur en a besoin, si par exemple tu choisis de mettre la fonction main avant la fonction f.


En plus de cela, dans le prototype, dans ton cas il est précisé une valeur par défaut.

c'est à dire qu'il est dit qu'on peut appeler f avec un seul argument : f(a), au lieu des deux prévus : f(a,b) , et que dans ce cas le compilateur interprétera ceci comme si tu avais fait f(a, 12).
0