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