개체 포인터 배열이란
객체를 가르킬수있는 포인터를 멤버로 지니는 배열이다.
- 객체 포인터 배열 예제 -
class Happy{
int x;
int y;
public:
Happy(int _x,int _y){
cout<<"test"<<endl;
x=_x;
y=_y;
}
};
int main(){
Happy *arr[5]; //Happy객체를 가르킬수있는 포인터배열 5개선언, 스택영역에 총 20바이트의 메모리를 할당하게된다.
for(int i=0; i<5; i++){
arr[i] = new Happy(i*2,i*3); //5개의 포인터배열의 객체를 동적 생성하고 있다.
}
return 0;
}
위 예제를 실행하면 아래와 같이 객체가 생성된다.
스택영역 힙영역
arry[0] : Hyppy* -----> Hyppy객체
.
.
arry[4]: Happy* -----> Hyppy객체
Happy 객체를 를 가르킬수 있는 포인터 배열 5개를 선언후 new Happy(i*2,i*3)명령에의해 Happy객체를 힙영역에 생성한다 (인자값으로 i*2,i*3을 갖을수있는 생성자를 호출 객체 초기화)
동적할당된 객체를 Happy포인터배열에 힙영역에 할당된 객체의포인터의 주소를 넣어줌으로써 하나의 객체가 만들어진다.
for문으로 5개의 객체를 초기화하고 할당한다.
객체를 가르킬수있는 포인터를 멤버로 지니는 배열이다.
- 객체 포인터 배열 예제 -
class Happy{
int x;
int y;
public:
Happy(int _x,int _y){
cout<<"test"<<endl;
x=_x;
y=_y;
}
};
int main(){
Happy *arr[5]; //Happy객체를 가르킬수있는 포인터배열 5개선언, 스택영역에 총 20바이트의 메모리를 할당하게된다.
for(int i=0; i<5; i++){
arr[i] = new Happy(i*2,i*3); //5개의 포인터배열의 객체를 동적 생성하고 있다.
}
return 0;
}
위 예제를 실행하면 아래와 같이 객체가 생성된다.
스택영역 힙영역
arry[0] : Hyppy* -----> Hyppy객체
.
.
arry[4]: Happy* -----> Hyppy객체
Happy 객체를 를 가르킬수 있는 포인터 배열 5개를 선언후 new Happy(i*2,i*3)명령에의해 Happy객체를 힙영역에 생성한다 (인자값으로 i*2,i*3을 갖을수있는 생성자를 호출 객체 초기화)
동적할당된 객체를 Happy포인터배열에 힙영역에 할당된 객체의포인터의 주소를 넣어줌으로써 하나의 객체가 만들어진다.
for문으로 5개의 객체를 초기화하고 할당한다.