Методом класса является функция, объявленная внутри определения класса. Тело функции может также определяться внутри определения класса. В этом случае функция называется встроенной (равносильно объявлению со спецификатором inline) функцией-элементом. Можно определить встроенную функцию-элемент и вне класса, указав в заголовке определения ключевое слово inline. Когда тело функции определяется вне тела класса, перед именем функции ставится префикс из имени класса и операции разрешения видимости ::. Например:
#include <math.h>
class CPoint
{
private:
int iX, iY;
public:
int GetX() { return iX; };
inline int GetY();
void SetX(int);
void SetY(int);
};
void CPoint::SetX(int iNewX)
{ iX = abs(iNewX); }
void CPoint::SetY(int iNewY)
{ iY = abs(iNewY); }
inline int CPoint::GetY()
{ return iY; }
Функции-методы GetX и GetY определены как встроенные, а SetX и SetY встроенными не являются.
Функции-элементы класса могут вызывать другие функции-элементы или поля того же класса, используя просто имя метода или поля. Обычные функции или функции-элементы других классов могут вызывать элементы класса с помощью операторов . и ->, применяемых к представителю или указателю на представитель класса. Например:
class CCoord
{
int iX, iY;
public:
void SetCoord(int _iX, int _iY)
{ iX = _iX; iY = _iY; };
void GetCoord(int &_iX, int &_iY)
{ _iX = iX; _iY = iY; };
};
int main(void)
{
CCord org;
CCord *p_org = &org;
org.SetCoord(10, 10);
int iCol, iRow;
p_org->GetCoord(iCol, iRow);
return 0;
}
|