Udostępnij za pośrednictwem


Funkcje członkowskie (C++)

Klasy mogą zawierać dane i funkcje.Funkcje te są określane, jako "funkcje członkowskie". Wszystkie niestatyczne funkcje zadeklarowane wewnątrz deklaracji klasy są uważane za funkcje członkowskie i są wywoływane przy użyciu operatorów wybranych elementów członkowskich (. and –>).Podczas wywoływania funkcji członkowskich z innych funkcji członkowskich tej samej klasy, można pominąć operator obiektu i wybrane elementy członkowskie.Na przykład:

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

Należy zauważyć, że w funkcji członkowskiej Show, wywołania innych funkcji członkowskich x i y są wykonane bez operatorów wybranych elementów członkowskich.Te wywołania niejawnie oznaczają this->x() i this->y().Jednakże, w main, funkcja członkowska Show, musi być wybrana przy użyciu obiektu pt i operatora wybranego elementu członkowskiego (.).

Funkcje statyczne zadeklarowane wewnątrz klasy mogą być wywołane przy użyciu operatorów wybranych elementów członkowskich, albo przez określenie nazwy pełni kwalifikowanej funkcji (łącznie z nazwą klasy).

[!UWAGA]

Funkcję zadeklarowane za pomocą słowa kluczowego friend nie są uważane za elementy członkowskie klasy, w której funkcja jest zadeklarowana, jako friend (chociaż może być elementem członkowskim innej klasy).Deklaracja friend steruje dostępem posiadania funkcji nie członkowskiej klasy danych.

Następująca deklaracja klasy pokazuje, jak zadeklarowane funkcje członkowskie są deklarowane i wywoływane:

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

W poprzednim kodzie, funkcje członkowskie obiektu ptOrigin są wywoływane za pomocą operatora wybranych elementów członkowskich (.).Jednak, funkcje członkowskie obiektu wskazywanego przez pptCurrent, są wywoływane za pomocą operatora –> wybranych elementów członkowskich.

Zobacz też

Informacje

Klasy, struktury i związki