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


소스코드

class Car
{
    public:
    int speed;
};

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

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


조회수 164


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

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

  • 2016년 02월 23일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close