답변
일반적으로 고유 한 복사 생성자를 정의해야 할 때와 동일한 상황에서 (예 : 기본 복사본으로 잘라내 지 않을 때) 할당 연산자를 직접 정의해야합니다. 이는 개체가 동적으로 할당 된 메모리 또는 특별히 복사해야하는 다른 리소스를 관리하는 경우에 발생합니다.
예를 들어 동적 할당 메모리를 가리키는 포인터를 관리하는 클래스가있는 경우 기본 할당 연산자는 포인터을 복사하기 만하면됩니다. 일반적으로 이것은 원하는 것이 아닙니다. 각 객체 인스턴스에 할당 된 데이터 인 복사본이 있어야하므로 고유 한 메모리를 할당하고 복사본을 수행하는 특수한 할당 연산자가 필요합니다. 예를 들어, 복사 또는 할당 할 때 std::vector
이 수행해야하는 내용입니다.
예, 동적 메모리 관리는 제 추측이었습니다. – user963241
@cpx : 실제로 좀 더 일반적입니다 : 기본 생성자가 올바르게 수행하지 않거나 사용할 수없는 모든 유형의 리소스를 관리합니다. 이것은 포인터에 의해 유지되는 메모리를 포함하지만, 예를 들어 뮤텍스 (mutex)와 같은 다른 리소스도 포함합니다. –
- 1. 부분 모의를 사용하는시기는 언제입니까?
- 2. Mac/iPhone에서 CALayer를 사용하는시기는 언제입니까?
- 3. sql 2008에서 timestamp를 사용하는시기는 언제입니까?
- 4. webpart에서 쿼리 문자열을 사용하는시기는 언제입니까?
- 5. C++ 템플릿에 = 연산자를 오버로드
- 6. 오버로드 + = +, ==와 = 연산자를
- 7. 단위 테스트를 통해 테스트 스크립트를 사용하는시기는 언제입니까?
- 8. gdb에서 오버로드 된 연산자를 어떻게 분해합니까?
- 9. 동적으로 할당 된 형식에 대한 C++의 오버로드 + 연산자
- 10. Silverlight 단위 테스트 프레임 워크에서 TestProperty-Attribute를 사용하는시기는 언제입니까?
- 11. Jar 파일의 Class-Path 속성을 검사하여 사용하는시기는 언제입니까
- 12. 왜 오버로드 된 연산자를 하나 개의 매개 변수
- 13. 기본 클래스에서 오버로드 된 연산자를 사용하는 파생 클래스에서 오류가 발생했습니다.
- 14. 오버로드 된 연산자 인라이닝 C++
- 15. 연산자를 "두 배 오버로드"할 수 있습니까?
- 16. 오버로드 연산자를 클래스 내에서 new 사용
- 17. [] 연산자를 어떻게 오버로드 할 수 있습니까?
- 18. Java는 연산자를 오버로드 할 수 없습니다. 왜?
- 19. Python에서 ++ 연산자를 오버로드 할 수 있습니까?
- 20. C++에서 오버로드 할당 연산자
- 21. Delphi 레코드에 대한 대입 연산자를 오버로드 할 수 있습니까?
- 22. sql :: ResultSet을 struct tm에 할당하기위한 오버로드 할당 연산자
- 23. 오버로드 된 연산자가 감지되지 않습니다.
- 24. 오버로드 된 버전의 연산자가 호출됩니다.
- 25. 오버로드 된 할당 연산자가 클래스에 대한 참조를 반환하는 이유는 무엇입니까?
- 26. 오버로드 된 문제 = 기능
- 27. 액세스 오버로드 된 템플릿 함수
- 28. 여기서 할당 연산자를 호출하지 않는 이유는 무엇입니까?
- 29. 오버로드 된 연산자 <<
- 30. 부울 연산자가 오버로드 된 라이브러리는 무엇입니까?
투표하려면 내 자신의 질문에 투표하십시오. – user963241