소년코딩

Member selection with pointers and references

구조체(또는 클래스)에 대한 포인터(pointer)나 참조형(reference)을 가지는 경우가 많다. 이전에 배웠던 것처럼 멤버 선택 연산자(.)를 사용해 구조체의 멤버를 선택할 수 있다.

struct Person
{
    int age;
    double weight;
};
Person person;

// Member selection using actual struct variable
person.age = 5;

이 문법은 참조형에서도 같다.

struct Person
{
    int age;
    double weight;
};
Person person; // define a person

// Member selection using reference to struct
Person& ref = person;
ref.age = 5;

그러나 포인터에서는 역참조 연산자(*)를 사용해서 역참조(dereference) 해야 한다.

struct Person
{
    int age;
    double weight;
};
Person person;

// Member selection using pointer to struct
Person* ptr = &person;
(*ptr).age= 5;

멤버 선택 연산자(.)는 역참조 연산자(*)보다 우선순위가 높으므로 포인터 역참조를 괄호로 묶어야 한다.

포인터를 통해 구조체 및 클래스 멤버에 접근하는 구문은 어색하므로 C++에서는 포인터로 멤버를 선택하는데 두 번째 멤버 선택 연산자(->)를 제공한다. 다음 두 줄은 같다.

(*ptr).age  = 5;
ptr->age = 5;

이 형식은 더 쉬울 뿐만 아니라 우선순위에 대해서 걱정할 필요가 없다.

포인터를 통해 멤버에 접근을 하는 경우 -> 연산자를 사용하자.


cpp 번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/612-member-selection-with-pointers-and-references/ 입니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기