Nagie's DevStory

[CPP] 28. 복사 생성자 (Copy Constructor) 본문

Programming/C++

[CPP] 28. 복사 생성자 (Copy Constructor)

Nagie 2023. 10. 22. 17:00
728x90

C++에서 복사 생성자는 객체의 생성 및 초기화에 사용된다.

복사 생성자는 하나의 객체가 다른 객체를 복사하여 생성될 때 호출되는 생성자이며

사용자가 따로 정의를 했다면 깊은 복사(deep copy)를 수행하기에

새로운 객체는 기존 객체와 동일한 데이터를 가지지만 독립된 메모리 공간을 사용한다.

요약하자면 다음과 같은 상황에서 호출된다.

 

1. 객체를 다른 객체로 초기화할 때

2. 객체를 함수에 전달할 때 (파라미터로 객체를 전달하거나 반환 값으로 객체를 반환할 때)

3. 객체를 다른 객체에 할당할 때

 

다음은 복사 생성자의 정의 방법이다.

 

class MyClass {
public:
    MyClass(const MyClass& other) {
    
        // 복사 생성자의 구현
    }
};

 

특히 클래스 내부에 포인터 데이터 멤버를 포함하고 있다면

같은 메모리 값을 가리키는 현상을 방지하기 위해 꼭 복사 생성자를 따로 정의해 깊은 복사(deep copy)를 수행해야 한다.

728x90
Comments