객체 배열 생성 및 소멸 (Java와 다른 점)
객체 배열 생성
* 객체 배열에서 JAVA와 차이점이 많다.
// JAVA의 경우
Vector[] list = new Vector[10];
//C++의 경우
Vector* list = new Vector[10];
* 코드상에서는 비슷하지만 내부적으로 전혀 다른 구조를 가진다.
* Java = Heap에 객체 포인터를 배열로 생성
* C++ = Heap에 실제 객체를 배열로 생성
* C++는 객체를 배열로 생성한다.
기본 생성자는 초기화가 이루어지지 않는데, 배열로 생성해도 초기화는 없다.
* Java는 바로 객체 배열을 만들 수 없다.
포인터 배열이 만들어지며, 객체를 따로 생성해 연결해야 한다.
(자바에서 배열은 이중 포인터를 사용해야 한다.)
(포인터를 0으로 초기화해준다.)
객체 이중 포인터 생성
// JAVA의 경우
Vector[] list = new Vector[10];
//C++의 경우
Vector** list = new Vector*[10];
* Java = 원래 이중 포인터이다.
* C++ = 이중 포인터도 가능하다.
객체 소멸
// JAVA의 경우
list = null;
//C++의 경우
delete[] list;
* Java = 메모리를 자동으로 관리해주므로
포인터에 null를 넣어주면 언젠가 해제해준다.
* C++ = delete[]를 꼭 명시해야 한다.
한 번만 해제하면 배열 모두 해제된다.
귀여운 그림은 쭐어님이 그리셨습니다.
반응형
'C++' 카테고리의 다른 글
[C++] 가상 소멸자 (0) | 2022.07.02 |
---|---|
[C++] 동적 바인딩, 정적 바인딩 (1) | 2022.06.30 |
[C++] friend 키워드 (2) | 2022.06.23 |
[C++] C++에서 C 라이브러리 표기법 (0) | 2022.06.22 |
[C++] Namespace 네임스페이스 (4) | 2021.11.21 |