객체에 대한 포인터 변수로 객체의 멤버 변수를 읽고 쓰거나 멤버 함수를 호출할 수 있다.
Circle donut; //객체 멤버 생성
double d = donut.getArea(); // d는 donut멤버의 getArea에 접근
Circle *p; // 객체에 대한 포인터 선언
p = &donut; // 포인터에 객체 멤버의 주소 저장
d = p->getArea(); // 객체 멤버를 getArea 함수에 넣음
#객체 이름으로 멤버에 접근할 때 >> . 연산자 (ex d = donut.getArea();)
#객체 포인터로 멤버에 접근할 때 >> -> 연산자 (ex d = p->getArea(); ||
d = (*p).getArea();
#멤버로 초기화되지 않은 객체 포인터를 사용하면 null pointer 에러
ex)
#include <iostream>
using namespace std;
class Circle { //객체 circle 생성
int radius; // 인자 생성 (private)
public:
Circle() { radius = 1; } //기본 생성자
Circle(int r) { radius = r; } //매개변수를 받는 생성자
double getArea(); //객체 함수
};
double Circle::getArea() {
return 3.14 * radius * radius; //원의 넓이를 계산하여 리턴
}
int main() {
Circle donut; //객체 멤버 'donut'생성
Circle pizza(30);//객체 멤버 pizza 생성
cout << donut.getArea() << endl; // 객체멤버 이름으로 함수 접근
Circle* p;
p = &donut;
cout << p->getArea() << endl; // 객체 포인터로 함수 접근
cout << (*p).getArea() << endl; //다른 표현
p = &pizza;
cout << p->getArea() << endl;
cout << (*p).getArea() << endl;
}