c++ 복사 생성자 예제

그렇지 않으면 암시적으로 선언된 복사 생성자는 T::T(T&)입니다. 이러한 규칙으로 인해 암시적으로 선언된 복사 생성자는 휘발성 lvalue 인수에 바인딩할 수 없습니다. copy 생성자는 이전에 만들어진 동일한 클래스의 개체로 개체를 초기화하여 개체를 만드는 생성자입니다. 복사 생성자는 사용됩니다 – 명시적 복사 생성자는 명시적 키워드를 사용하여 명시적으로 선언된 것입니다. 예: 일반 생성자 : 10 15 Copy 생성자 : 10 15 이러한 생성자의 첫 번째 인수는 생성되는 것과 동일한 형식의 개체에 대한 참조입니다 (const 또는 non-const), 모든 형식의 매개 변수 (모두 기본값 있음) ). 사용자 정의 복사 생성자는 일반적으로 개체가 파일에 대한 포인터 또는 공유 할 수없는 참조를 소유할 때 필요하며, 이 경우 소멸자와 할당 연산자도 작성해야합니다 (규칙 3 참조). 함수 호출 또는 복사 초기화 구문에서 개체를 복사하지 못하도록 하는 데 사용됩니다. 그렇다면 사용자 정의 복사 생성자가 실제로 필요한 시기는 언제입니까? 다음 섹션에서는 해당 질문을 살펴보겠습니다. 클래스가 동적으로 할당된 메모리를 처리하지 않을 때 얕은 복사 생성자가 사용됩니다. 개체 복사는 복사 생성자와 할당 연산자의 사용을 통해 수행됩니다.

복사 생성자는 첫 번째 매개 변수a(const 또는 volatile) 자체 클래스 형식에 대한 참조를 가지고 있습니다. 더 많은 인수를 가질 수 있지만 나머지는 연결된 기본값이 있어야 합니다. [1] 다음은 클래스 X에 대한 유효한 복사 생성자입니다: 복사 생성자가 클래스에 정의되지 않은 경우 컴파일러 자체가 하나를 정의합니다. 클래스에 포인터 변수가 있고 동적 메모리 할당이 있는 경우 복사 생성자가 있어야 합니다. 복사 생성자의 가장 일반적인 형태는 여기에 표시됩니다 – 복사 생성자가 필요한 예제 클래스를 작성? 다음은 복사 생성자의 사용을 보여 주는 전체 C++ 프로그램입니다. 다음 String 클래스에서는 복사 생성자작성을 작성해야 합니다. 예상과 달리 템플릿 복사 생성자는 사용자 정의 복사 생성자가 아닙니다. 따라서 T에 사용자 정의 소멸자 또는 사용자 정의 복사 할당 연산자가 있는 경우 암시적으로 정의된 복사 생성자의 생성이 더 이상 사용되지 않습니다.