클래스 개체를 복사합니다.
복사할 개체 할당 작업과 초기화 작업을 일으킬.
할당: 개체의 값을 다른 개체에 할당 하는 경우 첫 번째 개체가 두 번째 개체에 복사 됩니다.따라서
Point a, b; ... a = b;
b의 값이 a에 복사되도록 합니다.
초기화: 초기화 인수 값으로 함수에 전달 될 때 새 개체를 선언 하거나 값 함수에서 값으로 반환 될 때 발생 합니다.
클래스 형식의 개체에 대 한 "복사"의 의미를 정의할 수 있습니다.예를 들어, 다음이 코드를 살펴보십시오.
TextFile a, b;
a.Open( "FILE1.DAT" );
b.Open( "FILE2.DAT" );
b = a;
앞의 코드는 "FILE1.DAT의 내용을 FILE2.DAT에 복사"를 의미합니다. 또는, "FILE2.DAT을 무시하고, b 를 FILE1.DAT의 두번째 핸들로 만들기" 를 의미할 수도 있습니다. 에서는 의미를 복사할 적절 한 각 클래스에는 다음과 같이 연결 해야 합니다.
대입 연산자를 사용 하 여 operator= 전달 되는 매개 변수 및 반환 형식은 클래스 형식에 대 한 참조와 함께 const 참조 — 예를 들어 ClassName& operator=(const ClassName& x);.
복사 생성자를 사용 하 여.복사 생성자에 대 한 자세한 내용은 규칙을 생성자를 선언 합니다..
복사 생성자를 선언 하지 않으면 컴파일러는 member-wise 복사 생성자를 생성 합니다. 복사 할당 연산자를 선언 하지 않으면 컴파일러 member-wise 복사 할당 연산자를 생성 합니다. 복사 생성자를 선언 하지 컴파일러에서 생성 된 복사 대입 연산자를 억제 하지 않으며 그 반대의 경우도 마찬가지입니다.둘 중 하나를 구현 하는 경우 코드의 의미를 명확히 알 수 있도록 또한 다른 하나를 구현 하는 것이 좋습니다.
Member-wise 배정에서 자세히 다룹니다 멤버 수준 할당 및 초기화.
복사 생성자는 형식의 인수를 사용 클래스 이름을**&**, 클래스 이름 을 생성자에 정의 된 클래스의 이름입니다.예를 들면 다음과 같습니다.
// spec1_copying_class_objects.cpp
class Window
{
public:
Window( const Window& ); // Declare copy constructor.
// ...
};
int main()
{
}
[!참고]
복사 생성자 인수의 형식을 확인 const 클래스 이름 은 & 가능 합니다.이것은 복사 생성자가 복사하는 개체를 실수로 변경하지 않도록 방지합니다.또한 복사 가능 const 개체입니다.