728x90
반응형
[ 포인터 변수 ]
int num = 10;
int * ptr = #
int A[5];
[ 객체 포인터 ]
CIrcle donut;
Circle * ptr = &donut;
[ 객체 배열 ]
Circle A[5]; //Circle pizza(30); Circle donut;
1) Circle 클래스로부터 만든 객체를 저장할 수 있는 배열(사이즈 5)
2) 객체생성되어서 배열에 저장( 5번 생성자 호출) : void 생성자 호출(매개 변수 없는 생성자)
3) 객체 배열 생성 시 원하는 생성자 호출하는 방법 (임시객체)
ex) Circle A[5](15); //오류
int Array[3] = {1, 2, 3}; //배열초기화와 임시객체는 비슷함
Circle circleArray[3] = { Circle(10), Circle(20), Circle() }; //임시객체
- 배열 소멸 : 생성의 반대 순으로 소멸
코드
더보기
#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() //원의 넓이 구하는 함수
{
return radius * radius * 3.14;
}
};
int main(void)
{
/*
Circle donut; //void 생성자
Circle pizza(30); //매개변수 30을 받는 생성자
//객체 포인터
Circle* p = &donut;
cout << donut.getArea() << endl;
cout << p->getArea() << endl;
cout << (*p).getArea() << endl; //*p : p가 가리키는 대상을 지정함
p = &pizza;
cout << pizza.getArea() << endl;
cout << p->getArea() << endl;
cout << (*p).getArea() << endl;
*/
//객체 배열
Circle circleArray[3]; //객체 배열 생성자 3번 호출
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; //객체 포인터
//p = &circleArray[0];
p = circleArray;
for (int j = 0; j < 3; j++)
{
cout << "Circle [" << j << "]의 면적은 " << p[j].getArea() << endl;
/*cout << "Circle [" << j << "]의 면적은 " << p->getArea() << endl;
p++;*/
}
return 0;
}
728x90
반응형