Funciones miembro (C++)

Las clases pueden contener datos y funciones. Estas funciones se conocen como “funciones miembro”. Cualquier función no estática declarada dentro de una declaración de clase se considera una función miembro y se llama usando operadores de la selección de miembro (. y –>). Al llamar a funciones miembro desde otras funciones miembro de la misma clase, se puede omitir el objeto y el operador de selección de miembro. Por ejemplo:

// 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();
}

Observe que en la función miembro, Show, las llamadas a las otras funciones miembro, x y y, se crean sin operadores de selección de miembro. Estas llamadas significan implícitamente this->x() y this->y(). Sin embargo, en main, la función miembro, Show, se debe seleccionar mediante el objeto pt y el operador de selección de miembro (.).

Las funciones estáticas declaradas dentro de una clase se pueden llamar mediante operadores de selección de miembro o especificando el nombre de función completo (nombre de clase incluido).

Nota

Una función declarada con la palabra clave friend no se considera un miembro de la clase en la que se declara friend (aunque puede ser un miembro de otra clase).Una declaración de friend controla el acceso que tiene una función no miembro a los datos de la clase.

La siguiente declaración de clase muestra cómo se declaran y se llama a las funciones miembro:

// 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 );
}

En el código anterior, se llama a las funciones miembro del objeto ptOrigin mediante el operador de selección de miembro (.). Sin embargo, a las funciones miembro del objeto al que señala pptCurrent se las llama con el operador de selección de miembro –>.

Vea también

Referencia

Clases, estructuras y uniones