Member Access

객체 접근 문법은 왼쪽 값의 형태를 따른다

Person 객체를 직접 들고 있는지, 참조자인지, 포인터인지에 따라 같은 introduce 함수도 호출 기호가 달라진다.

객체

스택 객체는 점 연산자

Person p1("김영희", 25);
p1.introduce();

p1 자체가 Person 객체이므로 public 멤버 함수에 바로 점으로 접근한다.

참조자

참조자도 점 연산자

Person& ref = p1;
ref.setAge(26);

참조자는 객체의 별명처럼 동작하므로 포인터 역참조 없이 점을 사용한다.

포인터

포인터는 화살표 연산자

Person* p3 = new Person(...);
p3->introduce();

p3는 주소를 담고 있으므로 화살표로 역참조와 멤버 접근을 함께 표현한다.

동일한 의미

p3->setAge(23)(*p3).setAge(23)과 같고, delete 이후에는 nullptr로 바꿔 해제된 객체 접근을 막는다.