복사생성자란? 복사생성자가 호출되는 시점?
- 프로그래밍/C++
- 2011. 3. 22. 10:56
1.복사생성자란?
=> 생성자이다. 하지만 복사하는 생성자이다!
class SK{
private:
int m_a;
public:
SK(int n) {
m_a = n;
};
SK( SK& v ){
// 이런식으로 &지정이 꼭 되어야함
// 권장사항: ( const SK& v) 이렇게 레퍼런스와 const 를 지정하는것이 권장사항
// 권장사항: ( 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). 함수의 리턴값에 대해서 복사되는경우
호호 - 이정도면 완벽한 정리 ㅎㅎㅎ
이 글을 공유하기