목차
1. 포인터(new와 delete 연산자)를 이용한 동적 메모리 할당
2. 객체 포인터
3. 객체 배열
4. 객체 배열과 포인터
5. 객체 동적 메모리 할당
6. 객체 배열 동적 메모리 할당
7. 객체 배열을 동적으로 관리하는 객체
new연산자는 동적 메모리 할당받을 때, delete는 할당받은 메모리를 반환할 때 사용한다.
int* p1 = new int; //int타입 데이터 1개의 저장공간 할당
*p1 = 10;
cout<<*p1<<endl;
delete p1;
int* p2 = new int[3]; //int 타입 데이터 3개의 저장공간 할당 ( 동적 배열 할당)
delete[]p2; //배열 할당 해제 시 []가 필요함
class Book{
int price;
public:
void setPrice(int p):price(p);
}
int main(){
Book b;
Book* p; //Book 객체 포인터 선언
p = &b; //포인터 p에 Book 객체 c의 주소를 저장
p->setPrice(100);
}
class Book{
int price;
public:
void setPrice(int p):price(p);
}
int main(){
Book arr[3]; //Book 객체 배열
for(int i=0; i<3;i++){
int pr;
cin>>pr;
arr[i].setPrice(pr);
}
}
class Book{
int price;
public:
void setPrice(int p){price = p;}
}
int main(){
Book arr[3];
Book *p = arr;
for(int i=0; i<3;i++){
int price;
cin>>price;
p[i].setPrice(price); //(p+i)->setPrice(price)와 같은 의미이다
}
}
class Book{
int price;
public:
void setPrice(int p){price = p;}
}
int main(){
Book*p = new Book; //Book 객체의 저장공간 할당
p->setPrice(10000);
delete p; //동적 메모리 반환
}
class Book{
int price;
public:
void setPrice(int p){price = p;}
}
int main(){
Book *p = new Book[3]; //Book 객체 3개의 저장공간 할당
for(int i=0; i<3;i++){
int price;
cin>>price;
p[i].setPrice(price); //(p+i)->setPrice(price)와 같은 의미이다
}
delete []p;
}
class Book{
int price;
public:
void setPrice(int p){price = p;}
void printPrice(){cout<<price;}
};
class BookManage{
Book* b; //Book 객체 배열을 동적으로 할당받을 포인터 b
int size; //배열 사이즈 저장
public:
BookManage();
BookManage(int s);
void initData();
~BookManage(); //소멸자
}
BookManage::BookManage(){
b = NULL;
size = 0;
}
BookManage::BookManage(int s){
b = new Book[s]; //포인터에 Book 객체 s개의 저장공간 할당
size = s;
}
BookManage::initData(){ //data 초기화
for(int i=0;i<size;i++){
int pr;
cin>>pr;
b[i].setPrice(pr); //b 포인터가 가리키는 각 i번째 Book 객체의 setPrice() 멤버함수
}
}
int main(){
BookManage bm(2);
bm.initData();
}