class 멤버 변수 포인터? 어떨 때 쓰죠?

소스코드

class Car
{
    public:
    int speed;
};

int main()
{
    int Car::*pSpeed = &Car::speed;
    return 0;
}

이런 코드를 봤는데 mainint Car::*pSpeed = &Car::speed;는 어떤 경우에 쓰는지 궁금합니다.

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    pointer to member라고 합니다. 멤버 변수를 우회적으로 접근하게 해주지요.

    자세한 사용은 아래에 코드를 좀 더 추가해서 주석으로 달아놓았습니다.

    #include <iostream>
    using namespace std;
    
    class Car
    {
        public:
        int speed;
    };
    
    int main()
    {
        int Car::*pSpeed = &Car::speed;
    
        Car c1;
        c1.speed = 1;       // 직접 접근(일반적인 방법)
        cout << "speed is " << c1.speed << endl; //1출력
        c1.*pSpeed = 2;     // pointer to member를 써서 접근(우회)
        cout << "speed is " << c1.speed << endl; //2출력
        return 0;
    }
    

    저도 이론으로만 알고있지 실제로 써본 적은 없습니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.