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

조회수 3261회

소스코드

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;
    }
    

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)