C++/C++ 기본

객체 배열

검정비니 2018. 7. 7. 21:56
728x90
반응형

객체 배열



1. 객체 배열 선언 및 활용


C++에서 객체의 배열을 선언하는 방법을 알아보자. 객체 배열은 원소가 객체라는 점을 빼고, int, char 등 기본 타입의 배열을 선언하고 활용하는 방법과 동일하다. 다음 예제 코드를 보도록 하자.


i.e.

#include <iostream>

using namespace std;


class Circle {

int radius;

public:

Circle() { radius = 1; } //클래스 선언부에서 구현 -> 컴파일 시에 인라인 함수로 변환

Circle(int r) { radius = r; }

void setRadius(int r) { radius = r; }

double getArea();

};


double Circle::getArea() {

return 3.14 * radius * radius;

}


int main() {

Circle circleArray[3]; //Circle 객체 배열 생성


//배열의 각 원소 객체의 멤버 접근

circleArray[0].setRadius(10);

circleArray[1].setRadius(20);

circleArray[2].setRadius(30);


for (int i = 0; i< 3; i++) {

cout << "Circle " << i << "의 면적은 " << circleArray[i].getArea() << endl;

}


Circle *p; //Circle 객체 포인터 선언

p = circleArray; //포인터 p는 circleArray 배열을 가리키게 된다.


for (int i = 0; i < 3; i++) {

cout <<< "Circle " << i << "의 면적은 " << p->getArea() << endl;

p++; //포인터 산술 연산을 통해 객체 배열의 다음 원소로 이동

}

}



- 객체 배열 선언문은 반드시 기본 생성자를 호출한다.


객체 배열 선언문은 오직 매개 변수 없는 기본 생성자를 호출한다.


- 객체 배열 사용


배열의 각 원소 객체는 [] 연산자로 구분한다.


- 배열 소멸과 소멸자


함수가 종료하면 함수 내에 선언된 배열도 소멸된다. 배열이 소멸되면, 모든 원소 객체가 소멸되며 각 원소 객체마다 소멸자가 호출된다.


위의 예제에서 main() 함수가 종료되면 circleArray 배열이 소멸되며, 높은 인덱스에서부터 원소 객체가 소멸되고, 각 객체마다 ~Circle() 소멸자가 실행된다.





2. 객체 배열 초기화



객체 배열을 생성할 때 생성자를 사용하여 다음과 같은 방법으로 원소 객체의 초기화를 할 수 있다.


i.e.

Circle circleArray[3] = { Circle(10), Circle(20), Circle() };


배열을 선언할 때 { } 안에 호출할 생성자를 지정한다. 위의 예제 코드에 의해 circleArray[0], circleArray[1], circleArray[2]가 생성될 때, 생성자 Circle(10), Circle(20), Circle()이 각각 호출된다. 여기서, Circle(10)과 Circle(20)은 Circle(int r) 생성자를 호출하고, Circle()은 기본 생성자의 호출을 지시한다.

반응형

'C++ > C++ 기본' 카테고리의 다른 글

동적 메모리 할당 및 반환  (0) 2018.07.16
다차원 객체 배열  (0) 2018.07.07
객체 포인터  (2) 2018.07.07
바람직한 C++ 프로그램 작성법  (2) 2018.07.07
C++ 구조체  (2) 2018.07.07