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;
이 형식은 더 쉬울 뿐만 아니라 우선순위에 대해서 걱정할 필요가 없다.
포인터를 통해 멤버에 접근을 하는 경우 ->
연산자를 사용하자.
번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/612-member-selection-with-pointers-and-references/ 입니다.