[문과 코린이의 IT 기록장] C,C++ - 객체배열 (객체 배열, 객체 포인터 배열)
1. 객체 배열
ex)
1) 객체배열 형태
: 클래스명 객체명[크기]
ex. Person parr[3]
- 이 객체배열이 실행될 때, 생성자가 3번 실행된다. (3개의 객체가 생기는 것이므로)
- 마찬가지로, return을 만나 소멸할 경우에도, 소멸자가 3번 실행된다.
2) 동적으로 객체 배열 선언하기
Point * p1 = new Point[5];
- 동적으로 객체 배열을 선언하는 경우에도, deflat constructor을 이용해 모두 초기화된다.
- 즉, 이 코드는 Point형 객체에 대한, 5개를 사용할 수 있는 메모리 공간을 동적으로 확보하고, 각 공간에 defalt constructor로 객체를 생성한다는 것이다. 그리고 이후 첫 번째 객체의 주소를 포인터 변수 p1에 저장한다는 것이다.
2. 객체 포인터 배열
- 위의 내용을, 객체 포인터 배열 형식으로 변경한다면?
ex )
1) Person * parr[3];
// 아무런 객체도 생성되지 않는다. 단지 그냥 포인터에 대한 배열을 선언한 것 뿐이다.
2) for(int i=0 ; i<3 ; i++){
...
parr[i] = new Person(namestr, age);
// parr의 각 칸들은 포인터(주소를 담아야 함)들이기 때문에, Person(namestr, age)의 형식이 아니라, 동적으로 객체를 생성해주는 new Person(namestr, age)의 형식으로 생성자를 호출해주어야 한다.
}
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |