C++/디딤돌 C++

깊은 복사 [디딤돌 C++]

언제나휴일 2016. 4. 14. 11:46
반응형

깊은 복사 [디딤돌 C++]

언제나 휴일 티스토리



깊은 복사 [디딤돌 C++]


깊은 복사 [디딤돌 C++]



Program.cpp


//깊은 복사

//Program.cpp

 

#include <iostream>

using namespace std;

 

//개발자가 복사 생성자를 정의

class DCArray

{

    int *base;

    int bcapacity;

    int usage;

public:

    DCArray(int _capa)

    {

        bcapacity = _capa;

        base = new int[bcapacity]; //bcapacity개수의 int 형식을 동적으로 생성

        usage = 0;

    }

    DCArray(const DCArray &src)//복사 생성자

    {

        bcapacity = src.bcapacity;

        base = new int[bcapacity];

        usage = src.usage;

 

        for(int i = 0; i<usage;i++)

        {

            base[i] = src.base[i];

        }

 

    }

    ~DCArray()

    {

        delete[] base;//동저으로 생성한 저장소 소멸(new [] 생성한 것은 delete[] 소멸)

    }

   

    void PushBack(int data)

    {

        if(usage<bcapacity)// 차지 않았을

        {

            base[usage] = data;

            usage++;//보관 개수 1 증가

        }

    }

    void List()

    {

        for(int i = 0; i<usage;i++)

        {

            cout<<base[i]<<" ";

        }

        cout<<endl;

    }

};

int main()

{

    DCArray dcarr1(10);//저장소의 크기가 10 동적 배열 선언

    dcarr1.PushBack(4);//순차 보관

 

    DCArray dcarr2(dcarr1);//복사 생성으로 동적 배열 선언

   

    dcarr1.List();

    dcarr2.List();

 

    dcarr1.PushBack(9);

    dcarr2.PushBack(6);

 

    dcarr1.List();

    dcarr2.List();

 

    return 0;

}

 

* 디딤돌 C++  16. 생성자에서

돌 C++ 소개 가기

반응형