C++ 9.복사 생성자

-복사 생성자

//복사 생성자가 필요할 (개체 내부에 동적으로 생성한 다른 개체를 가질 )

#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;

}

 

728x90

'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

이 글을 공유하기

댓글

Designed by JB FACTORY