member_functions — 멤버 함수

member_functions — 멤버 함수 (Member functions)

**멤버 함수(member function)**는 클래스/구조체 안에 정의된 함수로, 특정 객체의 데이터에 접근·조작하는 함수예요.

객체가 가진 데이터(멤버 변수)를 다루는 동작을 클래스 안에 묶어둬요. 객체.멤버함수() 형태로 호출해요. this 포인터로 호출한 객체에 접근할 수 있어요.

출처: cppreference

본문

멤버 함수는 클래스의 멤버로 선언된 함수예요. 객체에 대해 동작하며 this로 호출 객체에 접근해요.

정의와 호출

struct Counter {
    int count = 0;
    void increment() { ++count; }     // 멤버 함수
    int get() const { return count; } // const 멤버 함수
};

Counter c;
c.increment();
int n = c.get();

const 멤버 함수

const 멤버 함수는 객체를 수정하지 않는다는 계약이에요. const 객체에서도 호출할 수 있어요.

struct S {
    int x;
    int get() const { return x; }   // const: 수정 불가
    void set(int v) { x = v; }      // 비const: 수정 가능
};

this 포인터

멤버 함수 안에서 this는 호출 객체를 가리켜요. 매개변수와 멤버 이름이 겹칠 때 구분에 쓰여요.

struct S {
    int x;
    void set(int x) { this->x = x; }  // this->x 는 멤버, x 는 매개변수
};

cv/ref 한정자

  • const — const 객체에서 호출 가능
  • volatile — volatile 객체에서 호출 가능
  • &, && (ref-qualifier) — lvalue/rvalue 객체에서만 호출
struct S {
    void f() & { }    // lvalue 에서만
    void g() && { }   // rvalue 에서만
};

static 멤버 함수

static 멤버 함수는 객체 없이 호출돼요. this가 없고, 비정적 멤버에 직접 접근할 수 없어요.

struct Math { static int square(int x) { return x * x; } };
Math::square(3);

virtual 멤버 함수

가상 멤버 함수는 파생 클래스에서 오버라이드되어 다형성을 제공해요.

인라인과 정의 위치

클래스 안에 정의된 멤버 함수는 암시적으로 인라인이에요. 클래스 밖에서 정의할 수도 있어요.

struct S {
    void f();   // 선언만
};
void S::f() { /* 정의 */ }   // 클래스 밖 정의

오버로딩

같은 이름의 멤버 함수를 매개변수로 구분해 여러 개 만들 수 있어요.

노트 (Notes)

  • 멤버 함수는 캡슐화의 핵심이에요 — 객체의 상태를 안전하게 다뤄요.
  • 특수 멤버 함수(생성자, 소멸자, 복사/이동)라는 별도 범주도 있어요.

더 알아보기 (Learn more)

cppreference