User Tools

Site Tools


cpp:syntax:class:functions

Méthodes ou fonctions membres

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 :

  • elle peut-être précédée du mot-clé static indiquant qu'il s'agit d'une fonction membre statique,
  • elle peut-être précédée du mot-clé virtual indiquant qu'il s'agit d'une méthode virtuelle,
  • elle peut-être suivi du mot clé 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.

Déclaration du prototype et du corps des fonctions membres

La définition de la fonction peut contenir

  • soit l'entête de la fonction membre suivi du corps de cell-ci :
    #include <cmath>
     
    struct Vector
    {     
        double x;
        double y;
     
        double norm() 
        { 
            return sqrt(x*x + y*y);
        }
    }
  • soit nous pouvons scinder la déclaration de la fonction membre en définissant au sein de la classe le prototype de la fonction membre. Le code de la fonction membre sera défini en dehors de la classe.
    #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);
    }
cpp/syntax/class/functions.txt · Last modified: 2022/11/18 10:48 (external edit)