멤버함수포인터에 관한 질문입니다

일반적인 함수포인터의 경우는

void Hello() { cout << "Hello" << endl; }

int main(){
    void (*Functionptr)(void) = Hello;

    Functionptr();

    return 0;
}

다음과 같이 사용할떄 그냥 Functionptr()이라고만 하면되고

멤버함수포인터의 경우는

class Number{
public:
    int Num;
    void Print(){ cout << "Num의 값 : " << this->Num << endl; }
};

int main(){
    Number a, b, c;
    a.Num = 1; b.Num = 10; c.Num = 100;

    void (Number::*Functionptr)(void) = Number::Print;

    (a.*Functionptr)(); // 1
    (b.*Functionptr)(); // 10
    (c.*Functionptr)(); // 100
       ↑
      (이 *이 뜻하는게 뭔가요?)

    return 0;
}

다음과 같이 하는데 여기서 멤버함수 포인터를 실행할떄

객체는 호출자이고 뒤에 붙은 *는 역참조의 *인가요?

만약 역참조면 도데체 뭘 역참조 하는 건가요?

안녕하세요

멤버 함수에 대한 포인터 형식이 그렇게 생겼습니다.

void (Number::*Functionptr)(void)

반환형 (타입::*변수명)(파라미터)
이렇게요.

일반적인 함수포인터와 비교하시면 앞에 스코프가 하나 생긴걸 알 수있죠? 맴버함수니까용 ㅎㅎㅎ
[타입::] 이거요. 이것 외에는 차이가 없습니다.

그리고 아마 void (Number::*Functionptr)(void) = &Number::Print; 이렇게 쓰셔야할겁니다.

아 형식이 그런거 였군요 정말로 감사합니다

앗 그렇군요 &를 쓰는것도 깜빡했네요