Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 복사 초기화와 직접 초기화 사이에 차이점이 있습니까?

<시간/>

복사 초기화는 복사 생성자의 개념을 사용하여 수행할 수 있습니다. 생성자가 객체를 초기화하는 데 사용된다는 것을 알고 있습니다. 다른 객체의 복사본을 만들기 위해 복사 생성자를 만들 수 있습니다. 즉, 다른 객체의 값으로 현재 객체를 초기화할 수 있습니다. 반면에 직접 초기화는 할당 연산을 사용하여 수행할 수 있습니다.

이 두 가지 초기화 유형의 주요 차이점은 복사 초기화가 새 개체에 대해 별도의 메모리 블록을 생성한다는 것입니다. 그러나 직접 초기화는 새로운 메모리 공간을 만들지 않습니다. 참조 변수를 사용하여 이전 메모리 블록을 가리킵니다.

복사 생성자 또는 복사 초기화(구문)

classname (const classname &obj) {
   // body of constructor
}

직접 초기화 또는 할당 연산자(구문)

classname Ob1, Ob2;
Ob2 = Ob1;

복사 초기화와 직접 초기화의 자세한 차이점을 살펴보겠습니다.

복사 초기화 직접 초기화
복사 초기화는 기본적으로 오버로드된 생성자입니다. 할당 연산자를 사용하여 직접 초기화를 수행할 수 있습니다.
이것은 이미 존재하는 개체로 새 개체를 초기화합니다. 이는 한 개체의 값을 이미 존재하는 다른 개체에 할당합니다.
복사 초기화는 기존 객체와 함께 새 객체가 생성될 때 사용됩니다. 기존 개체를 새 개체에 할당할 때 사용합니다.
두 개체 모두 별도의 메모리 위치를 사용합니다. 하나의 메모리 위치가 사용되지만 다른 참조 변수가 동일한 위치를 가리키고 있습니다.
클래스에 복사 생성자가 정의되어 있지 않으면 컴파일러가 복사 생성자를 제공합니다. 할당 연산자가 오버로드되지 않으면 비트 단위로 복사됩니다.