멤버 함수 (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가 가리키는 개체의 멤버 함수는 –> 멤버 선택 연산자를 사용하여 호출됩니다.