Fonctions membres (C++)
Les classes peuvent contenir des données et des fonctions. Ces fonctions portent le nom de « fonctions membres ». Toute fonction non statique déclarée dans une déclaration de classe est considérée comme une fonction membre et est appelée à l'aide des opérateurs de sélection de membre (. et –>). Lors de l'appel de fonctions membres à partir d'autres fonctions membres de la même classe, l'objet et l'opérateur de sélection de membres peuvent être omis. Par exemple :
// member_functions1.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class Point
{
public:
short x()
{
return _x;
}
short y()
{
return _y;
}
void Show()
{
cout << x() << ", " << y() << "\n";
}
private:
short _x, _y;
};
int main()
{
Point pt;
pt.Show();
}
Notez que dans la fonction membre, Show, les appels aux autres fonctions membres, x et y, sont effectués sans opérateur de sélection de membres. Ces appels signifient implicitement this->x() et this->y(). Toutefois, dans main, la fonction membre, Show, doit être sélectionnée à l'aide de l'objet pt et de l'opérateur de sélection de membres (.).
Les fonctions statiques déclarées dans une classe peuvent être appelées à l'aide des opérateurs de sélection de membre ou en spécifiant le nom de fonction qualifié complet (incluant le nom de la classe).
Notes
Une fonction déclarée avec le mot clé friend n'est pas considérée comme étant un membre de la classe dans laquelle elle est déclarée friend (bien qu'elle puisse être un membre d'une autre classe).Une déclaration friend contrôle l'accès aux données de classe dont dispose une fonction non membre.
La déclaration de classe suivante montre comment les fonctions membres sont déclarées et appelées :
// member_functions2.cpp
class Point
{
public:
unsigned GetX()
{
return ptX;
}
unsigned GetY()
{
return ptY;
}
void SetX( unsigned x )
{
ptX = x;
}
void SetY( unsigned y )
{
ptY = y;
}
private:
unsigned ptX, ptY;
};
int main()
{
// Declare a new object of type Point.
Point ptOrigin;
// Member function calls use the . member-selection operator.
ptOrigin.SetX( 0 );
ptOrigin.SetY( 0 );
// Declare a pointer to an object of type Point.
Point *pptCurrent = new Point;
// Member function calls use the -> member-selection operator.
pptCurrent->SetX( ptOrigin.GetX() + 10 );
pptCurrent->SetY( ptOrigin.GetY() + 10 );
}
Dans le code précédent, les fonctions membres de l'objet ptOrigin sont appelées à l'aide de l'opérateur de sélection de membres (.). En revanche, les fonctions membres de l'objet vers lequel pointe pptCurrent sont appelées à l'aide de l'opérateur de sélection de membres –>.