Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Langage C++
  3. Fonctions
Extrait - Langage C++ De l'héritage C au C++ moderne (avec programmes d'illustration) (2e édition)
Extraits du livre
Langage C++ De l'héritage C au C++ moderne (avec programmes d'illustration) (2e édition) Revenir à la page d'achat du livre

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...