복사생성자 예제

복사 생성자는 다음 시나리오에서 호출됩니다: 위의 예제를 관찰하는 경우 복사 생성자(user1)의 인스턴스를 만들고 사용자 개체의 인스턴스를 매개 변수 유형으로 사용합니다. 따라서 사용자 개체의 속성은 user1 개체로 보내지고 user1 개체의 속성 값을 변경하지만 사용자 개체 속성 값에는 영향을 주지 않습니다. 복사 생성자를 지정하지 않았므로 컴파일러가 생성했습니다. 생성된 생성자는 다음과 같습니다: 복사 생성자에 대한 인수를 참조로 전달해야 하는 이유는 무엇입니까? 개체가 값으로 전달될 때 복사 생성자가 호출됩니다. 복사 생성자 자체는 함수입니다. 따라서 복사 생성자의 값으로 인수를 전달하는 경우 복사 생성자 호출을 호출하여 호출의 비 종료 체인이 되는 복사 생성기를 호출합니다. 따라서 컴파일러는 매개 변수를 값으로 전달할 수 없습니다. copy 생성자는 이전에 만들어진 동일한 클래스의 개체로 개체를 초기화하여 개체를 만드는 생성자입니다. 복사 생성자는 에 사용됩니다 – 얕은 복사 생성자의 개념은 예를 통해 설명된다. 두 명의 학생이 네트워크를 통해 공유되는 두 대의 서로 다른 컴퓨터에서 동시에 엑셀 시트에 세부 정보를 입력합니다.

둘 다변경사항이 엑셀 시트에 반영됩니다. 동일한 엑셀 시트가 두 위치에서 열리기 때문에. 이것은 얕은 복사 생성자에서 일어나는 일입니다. 두 개체가 동일한 메모리 위치를 가리킵니다. 복사는 사용자 정의 복사 생성자를 통해서만 가능합니다. 사용자 정의 복사 생성자에서 복사된 개체의 포인터(또는 참조)가 새 메모리 위치를 가리키는지 확인합니다. 위의 코드에서 복사 생성자 (copy constructor)를 제거하면 문제가됩니까? 위의 프로그램에서 복사 생성자 제거하면 예상 된 출력이 없습니다. str2에 대한 변경 사항은 예상되지 않는 str1에도 반영됩니다. 복사된 정보에 대해 복사된 메모리를 할당합니다.

따라서 소스와 복사본이 다릅니다. 한 메모리 위치에서 변경한 내용은 다른 위치의 복사본에 영향을 주지 않습니다. 포인터를 사용하여 동적 메모리를 할당할 때 사용자 정의 된 복사 생성자가 필요합니다. 두 개체 모두 서로 다른 메모리 위치를 가리킵니다. 복사 생성자에 대한 인수가 const여야 하는 이유는 무엇입니까? 개체가 파일과 같은 포인터 또는 공유 할 수없는 참조를 소유하는 경우 일반적으로 사용자 정의 복사 생성자가 필요한 https://www.geeksforgeeks.org/copy-constructor-argument-const/ https://www.geeksforgeeks.org/copy-constructor-argument-const/ 참조합니다.이 경우 소멸자 및 할당 연산자가 또한 기록됩니다(3의 규칙 참조). 이러한 생성자에 대한 호출에는 복사본도 필요하므로 무한히 재귀 호출이 발생합니다. 위의 경우 프로그래머가 자체 생성자를 정의했기 때문에 데모 d2 = d1 문; 은 사용자가 정의한 복사 생성자를 호출합니다. 값 형식 데이터의 정확한 복사본을 만들고 포인터 p. Deep copy가 참조 형식 변수의 복사본을 만들지 않습니다.

C++ 프로그래밍 언어에서 복사 생성자는 기존 개체의 복사본으로 새 개체를 만들기 위한 특수 생성자입니다. 복사 생성자는 복제가 아닌 C++에서 개체를 복사하는 표준 방법이며 C++특정 뉘앙스가 있습니다.

Comments are closed

© 2019 Julie Lévesque. All Rights Reserved.
Another site by Webrunner Media