Funzioni membro (C++)
Le classi possono contenere dati e funzioni. Queste funzioni vengono definite "funzioni membro". Qualsiasi funzione non static dichiarata all'interno di una dichiarazione della classe è considerata una funzione membro ed è denominata utilizzando gli operatori di selezione dei membri (. e –>). Nel chiamare le funzioni membro da altre funzioni membro della stessa classe, l'oggetto e l'operatore di selezione dei membri possono essere omessi. Ad esempio:
// 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();
}
Si noti che nella funzione membro, Show, le chiamate alle altre funzioni membro, x e y, vengono eseguite senza operatori di selezione dei membri. Queste chiamate indicano in modo implicito this->x() e this->y(). Tuttavia, in main, la funzione membro, Show, deve essere selezionata utilizzando l'oggetto pt e l'operatore di selezione dei membri (.).
Le funzioni statiche dichiarate all'interno di una classe possono essere chiamate utilizzando gli operatori di selezione dei membri o specificando il nome completo della funzione (nome della classe incluso).
Nota
Una funzione dichiarata con la parola chiave friend non viene considerata un membro della classe in cui viene dichiarata friend (sebbene possa essere un membro di un'altra classe).Una dichiarazione friend controlla l'accesso di una funzione non membro ai dati della classe.
Nella seguente dichiarazione di classe viene illustrato come funzioni membro sono dichiarate e chiamate:
// 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 );
}
Nel codice precedente, le funzioni membro dell'oggetto ptOrigin vengono chiamate tramite l'operatore di selezione dei membri (.). Tuttavia, le funzioni membro dell'oggetto a cui fa riferimento pptCurrent vengono chiamate tramite l'operatore di selezione dei membri –>.