LANG/C++

[C++]05-1.'복사생성자'와의 첫 만남

혀니리리 2023. 5. 13. 12:46
728x90
class SoSimple
{
private:
	int num1;
    int num2;
public:
	SoSImple(int n1, int n2): num1(n1), num2(n2)
    { }
    void ShowSimpleData()
    {
    	cout << num1 << endl;
    	cout << num2 << endl;
    }
};

int main(void)
{
	SoSimple sim1(15, 20);
    SoSimple sim2 = sim1;
    sim2.ShowSimpleData();
    return 0;
}

이 상황에서 15, 20이 출력됨. 이는 생성자를 복사할 수 있다는 것~

SoSImple sim2 = sim1; 이게 되네.

이 부분이 복사생성자.

 

1.자동으로 삽입이 되는 디폴트 복사 생성자

디폴트 복사 생성자: 복사 생성자를 정의하지 않으면 자동으로 삽입됨.

하지만 반드시 복사생성자를 정의해야 하는 경우도 있음!(차후 설명)

 

2.변환에 의한 초기화! 키워드 explicit로 막을 수 있다!

explicit SoSimple(const SoSimple &copy)

   :num1(copy.num1), num2(copy.num2)

{

  //empty!!

}

더이상 묵시적 반환이 발생하지 않아서 대입연산자를 이용한 객체의 생성 및 초기화가 불가능해짐.

 

복사생성자의 매개변수는 반드시 참조형이어야 함!

728x90