복사 생성자와 할당 연산자는 한 개체를 다른 개체로 초기화하는 데 사용됩니다. 이들의 주요 차이점은 복사 생성자가 새 개체에 대해 별도의 메모리 블록을 생성한다는 것입니다. 그러나 할당 연산자는 새로운 메모리 공간을 만들지 않습니다. 참조 변수를 사용하여 이전 메모리 블록을 가리킵니다.
복사 생성자(구문)
classname (const classname &obj) { // body of constructor }
할당 연산자(구문)
classname Ob1, Ob2; Ob2 = Ob1;
복사 생성자와 할당 연산자의 자세한 차이점을 살펴보겠습니다.
복사 생성자 | 할당 연산자 |
---|---|
복사 생성자는 기본적으로 오버로드된 생성자입니다. | 할당 연산자는 기본적으로 연산자입니다. |
이것은 이미 존재하는 개체로 새 개체를 초기화합니다. | 이는 한 개체의 값을 이미 존재하는 다른 개체에 할당합니다. |
복사 생성자는 기존 객체로 새 객체를 생성할 때 사용됩니다. | 이 연산자는 기존 개체를 새 개체에 할당할 때 사용합니다. |
두 개체 모두 별도의 메모리 위치를 사용합니다. | 하나의 메모리 위치가 사용되지만 다른 참조 변수가 동일한 위치를 가리키고 있습니다. |
클래스에 복사 생성자가 정의되어 있지 않으면 컴파일러에서 복사 생성자를 제공합니다. | 할당 연산자가 오버로드되지 않은 경우 비트 단위 복사가 만들어집니다. |