Définitions de fonction C++
Les définitions de fonctions diffèrent des déclarations de fonctions, dans le sens où elles fournissent les corps de fonction, c'est-à-dire le code qui constitue la fonction. La forme d'une définition de fonction est la suivante :
decl-specifiers declarator [cv-qualifers] [exception-specification]
{
// function body
}
decl-specifiers declarator [cv-qualifers] =default;
decl-specifiers declarator [cv-qualifers] =delete;
Les parties de la définition sont les suivantes :
Spécificateurs de déclaration, comme décrit dans Déclarations de fonctions.
Le déclarateur (décrit plus loin dans cet article).
Un qualificateur const ou volatile facultatif. Dans ce contexte, const peut uniquement être utilisé pour les membres de classe, afin d'indiquer que la fonction ne modifiera pas les données membres de la classe.
Spécification d'exception qui décrit les exceptions que la fonction peut lever. Consultez Spécifications d'exception.
Corps de la fonction, composé d'instructions placées entre accolades {}.
=default; dans le cas d'une définition utilisée par défaut de manière explicite.
=delete; dans le cas d'une définition supprimée.
La forme du déclarateur est la suivante :
Opérateurs de pointeur ou de référence facultatifs qui modifient le type de retour.
Modificateur spécifique à Microsoft facultatif. Consultez Modificateurs spécifiques Microsoft.
Nom de la fonction. Si la fonction est un membre d'une classe ou d'un struct, le nom peut être qualifié à l'aide de l'opérateur de résolution de portée.
Liste des déclarations d'arguments entre parenthèses ().
Pour les constructeurs, un initialiseur facultatif de constructeur (décrit plus loin dans cet article).
Pour plus d'informations sur la forme du déclarateur dans ces cas-là, consultez les commentaires dans Déclarations de fonctions concernant les fonctions qui retournent des pointeurs de fonction.
Les arguments formels déclarés dans la liste de déclaration d'arguments sont dans la portée du corps de la fonction.
L'illustration suivante montre les parties d'une définition de fonction. La zone grisée est le corps de la fonction.
Parties d'une définition de fonction
L'élément initialiseur de constructeur de la syntaxe est utilisé uniquement dans les constructeurs. Son objectif est de permettre l'initialisation des classes de base et des objets contenus. Pour plus d'informations sur l'utilisation de l'initialiseur de constructeur, consultez Initialisation des bases et des membres.
Une définition utilisée par défaut de manière explicite ne peut être déclarée que pour une fonction membre spéciale. Lorsqu'une fonction membre spéciale possède explicitement une valeur par défaut, l'implémentation la définit comme si elle avait une définition implicite, si ce n'est qu'elle peut être non inline (une fonction membre spéciale déclarée implicitement est toujours inline). Pour plus d'informations sur les fonctions utilisées par défaut, consultez la section « Fonctions utilisées par défaut et supprimées » de Prise en charge des fonctionnalités C++11 (Modern C++).
Une définition supprimée, également appelée fonction supprimée, est implicitement inline. Un programme qui fait référence à une fonction supprimée explicitement ou implicitement, pour une autre raison que de la déclarer, est mal formé. Pour plus d'informations sur les fonctions supprimées, consultez la section « Fonctions utilisées par défaut et supprimées » de Prise en charge des fonctionnalités C++11 (Modern C++).
Voir aussi
Référence
Concepts
Recherche de nom qui dépend de l'argument (Koenig) sur les fonctions