2011-01-22 6 views

답변

12

일반적으로 고유 한 복사 생성자를 정의해야 할 때와 동일한 상황에서 (예 : 기본 복사본으로 잘라내 지 않을 때) 할당 연산자를 직접 정의해야합니다. 이는 개체가 동적으로 할당 된 메모리 또는 특별히 복사해야하는 다른 리소스를 관리하는 경우에 발생합니다.

예를 들어 동적 할당 메모리를 가리키는 포인터를 관리하는 클래스가있는 경우 기본 할당 연산자는 포인터을 복사하기 만하면됩니다. 일반적으로 이것은 원하는 것이 아닙니다. 각 객체 인스턴스에 할당 된 데이터 인 복사본이 있어야하므로 고유 한 메모리를 할당하고 복사본을 수행하는 특수한 할당 연산자가 필요합니다. 예를 들어, 복사 또는 할당 할 때 std::vector이 수행해야하는 내용입니다.

+0

예, 동적 메모리 관리는 제 추측이었습니다. – user963241

+3

@cpx : 실제로 좀 더 일반적입니다 : 기본 생성자가 올바르게 수행하지 않거나 사용할 수없는 모든 유형의 리소스를 관리합니다. 이것은 포인터에 의해 유지되는 메모리를 포함하지만, 예를 들어 뮤텍스 (mutex)와 같은 다른 리소스도 포함합니다. –

관련 문제