Fonctions
Hérité du C
1. Principe
La fonction est une unité de traitement en vue de l’accomplissement d’une action.
-
Elle se retrouve souvent comme une étape dans la suite des opérations réalisées par un algorithme.
-
Elle permet également de factoriser (généraliser) du code qui se répète. Dans un programme C, si une séquence d’actions se répète, en général il y a une fonction à écrire pour éclaircir et alléger le code. Visual Studio propose même une fonctionnalité d’écriture automatique de fonctions à partir d’un bloc de code sélectionné.
Techniquement, la fonction est un bloc d’instructions doté d’un nom et de deux mécanismes :
-
Un mécanisme d’entrée de valeur(s) : ce sont les paramètres en entrée.
-
Un mécanisme de sortie de valeur : la valeur de retour (unique).
Une fois écrite, la fonction est "appelée". L’appel de la fonction permet d’insérer le bloc des instructions de la fonction dans le déroulement du programme à l’endroit où elle est appelée. À ce moment, nous donnons pour son exécution des valeurs aux paramètres et, s’il y a lieu, nous pouvons aussi récupérer la valeur de retour.
Une fonction prend la forme suivante :
<type du retour > <nom fonction> < ( liste de paramètres ) >
{ ouverture bloc
(...) // les instructions du bloc
return (...) //instruction de retour si sortie de valeur
} fermeture bloc
La première ligne définit le type de la fonction composé...
Apports du C++
Le C++ enrichit l’écriture des fonctions avec des apports significatifs comme la surcharge des fonctions, les valeurs par défaut de paramètre, la généricité.
1. Fonctions embarquées "inline"
Ce sont des petites fonctions optimisées en termes de vitesse par le compilateur lors de la compilation. C’est équivalent aux fonctions obtenues avec #define en C. En général, cette appellation est réservée à de petites fonctions qui doivent s’exécuter particulièrement promptement.
Pour écrire une telle fonction, il faut utiliser le mot-clé inline :
#include <iostream>
inline int cmpt()
{
static int c = 0;
return c++;
}
int main()
{
for (int i = 0; i < 50; i++)
std::cout << cmpt() << std::endl;
std::cin.get();
return 0;
Une variable déclarée static comme celle de la fonction cmpt() est une variable qui reste en mémoire et ne disparaît pas à la fin du bloc où elle est déclarée, de sorte qu’à chaque nouvel appel de la fonction, elle a conservé sa valeur précédente (portée et durée de vie des variables sont détaillées au chapitre Précisions sur les variables, attributs).
2. Fonctions constantes marquées constexpr
Une fonction déclarée constexpr est une fonction implicitement inline. Le compilateur évalue la valeur de retour une fois pour toutes à la compilation, ce qui procure un gain de performance ensuite. Les conditions suivantes sont nécessaires...