celui-ci n’est pas prévu dans l’argument muet ; en revanche, si l’agument muet
mentionne l’attribut const, l’argument effectif pourra être non seulement une constante,
mais également une expression d’un type quelconque dont la valeur sera alors convertie
dans une variable temporaire dont l’adresse sera fournie à la fonction.
Variables globales et locales
Une variable déclarée en dehors de toute fonction (y compris du main) est dite globale.
La portée d’une variable globale est limitée à la partie du programme source suivant sa
déclaration. Les variable globales ont une classe d’allocation statique, ce qui signifie
que leurs emplacements en mémoire restent fixes pendant l’exécution du programme.
Une variable déclarée dans une fonction est dite locale. La portée d’une variable locale
est limitée à la fonction dans laquelle elle est définie. Les variables locales ont une
classe d’allocation automatique, ce qui signifie que leurs emplacements sont alloués à
l’entrée dans la fonction, et libérés à la sortie. Il est possible de déclarer des variables
locales à un bloc.
On peut demander qu’une variable locale soit de classe d’allocation statique, en la
déclarant à l’aide du mot-clé static, comme dans :
static int i ;
Les variables de classe statique sont, par défaut, initialisées à zéro. On peut les
initialiser explicitement à l’aide d’expressions constantes d’un type compatible par
affectation avec celui de la variable. Celles de classe automatique ne sont pas
initialisées par défaut. Elles doivent être initialisées à l’aide d’une expression
quelconque, d’un type compatible par affectation avec celui de la variable.
Surdéfinition de fonctions
En C++, il est possible, au sein d’un même programme, que plusieurs fonctions
possèdent le même nom. Dans ce cas, lorsque le compilateur rencontre l’appel d’une
telle fonction, il effectue le choix de la « bonne » fonction en tenant compte de la nature
des arguments effectifs.
D’une manière générale, si les règles utilisées par le compilateur pour sa recherche
sont assez intuitives, leur énoncé précis est assez complexe, et nous ne le rappellerons
pas ici. On trouvera de nombreux exemples de surdéfinition et un récapitulatif complet
des règles dans nos ouvrages consacrés au C++ (publiés également aux éditions
Eyrolles). Signalons simplement que la recherche d’une fonction surdéfinie peut faire
intervenir toutes les conversions usuelles (promotions numériques et conversions
55
mentionne l’attribut const, l’argument effectif pourra être non seulement une constante,
mais également une expression d’un type quelconque dont la valeur sera alors convertie
dans une variable temporaire dont l’adresse sera fournie à la fonction.
Variables globales et locales
Une variable déclarée en dehors de toute fonction (y compris du main) est dite globale.
La portée d’une variable globale est limitée à la partie du programme source suivant sa
déclaration. Les variable globales ont une classe d’allocation statique, ce qui signifie
que leurs emplacements en mémoire restent fixes pendant l’exécution du programme.
Une variable déclarée dans une fonction est dite locale. La portée d’une variable locale
est limitée à la fonction dans laquelle elle est définie. Les variables locales ont une
classe d’allocation automatique, ce qui signifie que leurs emplacements sont alloués à
l’entrée dans la fonction, et libérés à la sortie. Il est possible de déclarer des variables
locales à un bloc.
On peut demander qu’une variable locale soit de classe d’allocation statique, en la
déclarant à l’aide du mot-clé static, comme dans :
static int i ;
Les variables de classe statique sont, par défaut, initialisées à zéro. On peut les
initialiser explicitement à l’aide d’expressions constantes d’un type compatible par
affectation avec celui de la variable. Celles de classe automatique ne sont pas
initialisées par défaut. Elles doivent être initialisées à l’aide d’une expression
quelconque, d’un type compatible par affectation avec celui de la variable.
Surdéfinition de fonctions
En C++, il est possible, au sein d’un même programme, que plusieurs fonctions
possèdent le même nom. Dans ce cas, lorsque le compilateur rencontre l’appel d’une
telle fonction, il effectue le choix de la « bonne » fonction en tenant compte de la nature
des arguments effectifs.
D’une manière générale, si les règles utilisées par le compilateur pour sa recherche
sont assez intuitives, leur énoncé précis est assez complexe, et nous ne le rappellerons
pas ici. On trouvera de nombreux exemples de surdéfinition et un récapitulatif complet
des règles dans nos ouvrages consacrés au C++ (publiés également aux éditions
Eyrolles). Signalons simplement que la recherche d’une fonction surdéfinie peut faire
intervenir toutes les conversions usuelles (promotions numériques et conversions
55
