Функции-члены (C++)
Классы могут содержать данные и функции. Эти функции называются "функции-члены". Любая нестатический функция, объявленная внутри объявления класса, считается функцией-членом и вызывается с помощью операторов выбора членов (. и –>). При вызове функций-членов из других функций-членов того же класса можно опустить объект и оператор выбора члена. Например:
// 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();
}
Обратите внимание, что в функции-члене Show вызовы других функций-членов ( x и y) выполняются без операторов выбора членов. Эти вызовы неявно означают this->x() и this->y(). Однако в функции main функцию-член Show необходимо выбрать с помощью объекта pt и оператора выбора членов (.).
Статические функции, объявленные внутри класса, могут вызываться с помощью операторов выбора членов или путем указания полного имени функции (включая имя класса).
Примечание
Функция, объявленная с использованием ключевого слова friend, не считается членом класса, в котором она объявлена как friend (хотя эта функция может быть членом другого класса).Объявление friend управляет доступом функции, не являющейся членом, к данным класса.
В следующем объявлении класса показаны способы объявления и вызова функций-членов.
// 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 );
}
В приведенном выше коде функции-члены объекта ptOrigin вызываются с помощью оператора выбора членов (.). Однако функции-члены объекта, на который указывает указатель pptCurrent, вызываются с помощью оператора выбора членов –>.