MODULE : POO
Enseignant : Mohamed Kharrat Année universitaire 2016/2017
1
Séance 3
Arguments par défaut
- définition :
void fonction(int a, int b, int c)
{
cout << a << « , » << b << « , » << c;
cout << endl;
return;
} • prototype :
void fonction(int, int=0, int=1);
2
Arguments par défaut
- utilisation :
void main()
{
int x,y;
x=4;
y=x+5;
fonction(y); // fonction(y,0,1);
fonction(2,x); // fonction(2,x,1);
fonction(x,y,x+y); // 3 arguments
}
3
Arguments par défaut Cas particuliers, attention danger
- En C++, on ne peut pas « sauter » des paramètres, même s’ils sont facultatifs.
- Est-ce qu’on peut rendre seulement ‘a’ facultatif, et rendre ‘b’ et ‘c’ obligatoires ?
4
Surcharge de fonctions
prototype
void f(int,int); void f(int,double); void f(double,int);
les 3 fonctions coexistent dans un programme
5
Exemple
Fonction permettant d’additionner deux entiers, puis une autre deux flottants.
int add(int a, int b) { return a+b; }
float add(float a, float b) { return a+9; }
//pas de problème de conflit de nom, le compilateur est suffisamment malin pour deviner quoi faire avec
int neuf = add(4,5);
float f = add(4.6f,99.23f);
Attention : pas de prise en compte de la valeur de retour.
Signature = Nom+Liste des Types 6
Fonctions prenant un nombre variable de paramètres
- Pour indiquer au compilateur qu’une fonction peut accepter une liste de paramètres variable, il faut simplement utiliser des points de suspensions dans la liste des paramètres dans les déclarations et la définition de la fonction. :
type identificateur(paramètres, …)
- Il faut ajouter la ligne suivante au début du programme :
- #include <stdarg.h>
7
#include <stdarg.h>
- Cela permet d’utiliser le type va_list et les expressions va_start, va_arg et va_end pour récupérer les arguments de la liste de paramètres variable, un à un. • va_start(variable, paramètre) ; • va_arg(variable, type) • va_end(variable) ;
- Problème ! !!!!!!!!!!!!!!! • Nombre de paramètres inconnu pour la fonction
8
Fonction à nombre de paramètres variable
#include <stdarg.h>
/* Fonction effectuant la somme de « compte »
do /* Parcours de la liste. */ paramètres : */ { double somme(int compte, …)
resultat=resultat+va_arg(varg, double); compte=compte-1; { } while (compte!=0);
double resultat=0; /* Variable stockant la somme. */
va_end(varg); /* Terminaison. */ va_list varg; /* Variable identifiant le prochain
return resultat;
paramètre. */ } va_start(varg, compte); /* Initialisation de la liste. */
Exemple d’appel: double RR= somme(3, 4.0, 10.0, 3.0) ;
9
L’en-tête fstream : lire & écrire dans un fichier
- il faut spécifier #include <fstream> .
- Les flux sont des objets.
- Les fichiers ouverts sont automatiquement refermés lorsque l’on sort du bloc où le flux est déclaré.
- Ouvrir un fichier en écriture:
- On déclare un flux exactement de la même manière qu’une variable, une variable dont le type serait ofstream et dont la valeur serait le chemin d’accès du fichier à lire.
ofstream monFlux(« C:/dossier/scores.txt »);
//Déclaration d’un flux permettant d’écrire dans le fichier
10 « C:/dossier/scores.txt »
Test
if(monFlux) //On teste si tout est OK {
//Tout est OK, on peut utiliser le fichier } else {
cout << « ERREUR: Impossible d’ouvrir le fichier. » << endl; }
11
Écrire dans un flux
- Il faut utiliser les chevrons (<<) if(monFlux)
{
monFlux << « Année universitaire. » << endl; monFlux << 2016/2017 << endl; int mois(9); monFlux << « Mois » << mois << » ans. » << endl; }
12
télécharger gratuitement cours de Programmation Orienté Objet en C++(science 3)