728x90

객체에 대한 포인터 변수로 객체의 멤버 변수를 읽고 쓰거나 멤버 함수를 호출할 수 있다.

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

+ Recent posts