복사생성자란? 복사생성자가 호출되는 시점?


1.복사생성자란?
=> 생성자이다. 하지만 복사하는 생성자이다!

class SK{
        private: 
int m_a;
public:
SK(int n) {
m_a = n;
};
SK( SK& v ){
 // 이런식으로 &지정이 꼭 되어야함
//  권장사항: ( const SK& v) 이렇게 레퍼런스와 const 를 지정하는것이 권장사항
m_a = v.m_a;
};
};

2. &를 꼭 붙여줘야한다! 만약 빼먹으면 어떻게 되나?

=> 무한루프에 빠지게됨!
=> 이유: call_by_value를 하게 되면서 계속적으로 스택에 복사가 되기 때문이다.

3.생성자엔 디폴트 복사생성자가 있다.

->하지만 디폴트 복사 생성자는 그냥 값에의한 복사만 하는것이라 상당히 위험한 요소가있다.(얕은복사)

4.복사생성자와 얕은복사

-> 블로그 다른부분에 자세히 정리 되어있다.
2011/03/20 - [프로그래밍/C++] - 복사생성자와 얕은복사 


5.복사생성자가 호출되는 시점
=> 말그대로 복사가 될 경우를 말한다. 

1). 자기자신의 타입(클래스) 인스턴스에 대해서 대입되는경우( call_by_value 형태)
2). 함수의 인자에 들어가 복사 되는 경우
3). 함수의 리턴값에 대해서 복사되는경우
 

호호 - 이정도면 완벽한 정리 ㅎㅎㅎ 

이 글을 공유하기

댓글

Designed by JB FACTORY