[C++] 복사 생성자
Language/C++- 복사 생성자란
복사 생성자란 자기 자신과 같은 형태의 객체를 인자로 받을 수 있는 생성자를 말한다.
다음은 복사 생성자의 예이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <iostream> using namespace std; class AAA { int val; public: AAA(int _val) { val = _val; } AAA(const AAA& a) { val = a.val; } void showValue() { cout << "value: " << val << endl; } }; int main() { AAA a1(10); AAA a2(a1); a1.showValue(); a2.showValue(); return 0; } |
복사생성자는 인자로 전달된 객체를 레퍼런스로 받아야 하며 내용 변경을 불가능 하게 하기 위해 const 선언을 한다.
- 다폴트 복사 생성자
일반 생성자와 소멸자처럼 복사 생성자도 디폴트 복사 생성자를 제공한다.
위 예제에서 11~13 라인을 지워도 자동으로 디폴트 복사 생성자를 삽입하기 때문에 똑같이 동작한다.
하지만 생성자내에서 동적할당을 하는경우 디폴트 복사 생성자에서는 얕은 복사(Shallow Copy)를 하게 되는데 이경우 문제가 발생한다.
따라서 깊은 복사(Deep Copy) 로 직접 복사 생성자를 구현해 주어야 한다.
'Language > C++' 카테고리의 다른 글
[C++] static 키워드 (0) | 2015.12.02 |
---|---|
[C++] const 키워드 (0) | 2015.12.02 |
[C++] friend 선언 (0) | 2015.12.02 |
[C++] this 포인터 (0) | 2015.12.02 |
[C++] 생성자(Constructor)와 소멸자(Destructor) (0) | 2015.11.30 |