C++ 9.복사 생성자
- C++/설명
- 2016. 4. 19. 21:12
-복사 생성자
//복사 생성자가 필요할 때(개체 내부에 동적으로 생성한 다른 개체를 가질 때)
#include <iostream>
using namespace std;
class DArray
{
int *base; //저장소의 위치
int bcapacity; //저장소의 크기
int usage; //보관 개수
public:
DArray(int _bcapa) //생성자
{
base = new int[_bcapa];//버퍼 동적 할당
bcapacity = _bcapa;
usage =0;
}
DArray(const DArray &src)//복사 생성자(깊은 복사)
{
base = new int[src.bcapacity];
bcapacity = src.bcapacity;
for(usage = 0; usage < src.usage; usage++)
{
base[usage] = src.base[usage];
}
}
~DArray() //소멸자
{
//delete[] base; //복사 생성자때문에 잠시 주석처리함.
}
void PushBack(int data) //순차 보관
{
if(usage == bcapacity) //꽉 차면
{
return;
}
base[usage] = data;//usage 인덱스에 data보관
usage++;//usage 1 증가
}
void List() //목록보기
{
cout<<"보관 개수:"<<usage<<endl;
for(int i = 0; i < usage; i++)
{
cout<<base[i]<<" ";
}
cout<<endl;
}
};
int main(void)
{
DArray darr(10);
darr.PushBack(3);
darr.PushBack(9);
cout<<"darr 목록,";
darr.List();
DArray darr2(darr);//소멸자로 인해 터지긴 하지만 실행은 된다.
cout<<"darr2 목록,";
darr2.List();
darr.PushBack(12);
cout<<"darr 목록,";
darr.List();
darr2.PushBack(15);
cout<<"darr 목록,";
darr.List();
cout<<"darr2 목록,";
darr2.List();
return 0;
}
'C++ > 설명' 카테고리의 다른 글
C++ 11. 캡슐화 실습(학생 성적) (0) | 2016.04.19 |
---|---|
C++ 10.캡슐화 실습(복소수) (0) | 2016.04.19 |
C++ 7.생성자와 소멸자 (0) | 2016.04.19 |
C++ 6.접근 지정자 (0) | 2016.04.19 |
C++ 5.정적 클래스 (0) | 2016.04.19 |
이 글을 공유하기