Une méthode ou une fonction membre est une fonction C qui possède l'accès à l'ensemble des éléments qui sont définis à l'intérieur de l'objet sans avoir besoin de faire référence à l'instance de l'objet.
#include <cmath> struct Vector { double x; double y; double norm() { return sqrt(x*x + y*y); } }
La fonction membre norm
accède directement aux champs x
et y
comme si ces champs étaient des champs définis dans la mémoire globale du programme. Cependant ces champs sont définis dans l'objet.
Cette fonction membre norm
peut lire et modifier le contenu des champs x
et y
. Le qualificateur const permet de définir si une fonction membre a le droit de modifier l'état interne de l'objet, ie. de modifier la valeur d'un champ ou d'appeler une fonction qui modifierait l'état interne de l'objet
Une fonction membre est défini comme une fonction standard avec les trois différences suivantes :
static
indiquant qu'il s'agit d'une fonction membre statique,virtual
indiquant qu'il s'agit d'une méthode virtuelle,const
indiquant que la méthode ne peut pas modifier l'état interne de l'objet.Cependant, une fonction membre ne peut pas avoir le même nom que celui de sa classe. En effet, les fonctions membres qui portent le même nom que le nom de la classe sont appelés des constructeurs.
La définition de la fonction peut contenir
#include <cmath> struct Vector { double x; double y; double norm() { return sqrt(x*x + y*y); } }
#include <cmath> struct Vector { double x; double y; double norm(); } double Vector::norm() { return sqrt(x*x + y*y); }
\ Dans ce cas, il est possible de mettre la définition du code de la fonction dans un fichier “.h”
ou “.hpp”
.
// Fichier Vector.hpp #ifndef VectorHPP #define VectorHPP #include <cmath> struct Vector { double x; double y; double norm(); }; #endif
et le code de la fonction membre dans le fichier “.cc”
ou “.cpp”
:
// Fichier Vector.cpp #include "Vector.hpp" double Vector::norm() { return sqrt(x*x + y*y); }