복사 생성자와 복사 할당 연산자에 대한 공통 함수 작성
프로그래밍에서 복사 생성자와 복사 할당 연산자는 종종 구현의 상당 부분. 이러한 유사성은 다음과 같은 질문을 촉발합니다: 이들 기능을 단일 공통 함수로 병합할 수 있습니까?
공통 함수 접근 방식
예, 다음을 처리하는 공통 함수를 생성하는 것이 가능합니다. 복사 생성자와 복사 할당 연산자 모두. 방법은 다음과 같습니다.
옵션 1: 명시적 연산자= 복사 생성자에서 호출(권장되지 않음)
MyClass(const MyClass& other) { operator=(other); }
그러나 이 접근 방식은 다음과 같은 이유로 권장되지 않습니다.
옵션 2: 복사 및 교환 관용구
MyClass& operator=(const MyClass& other) { MyClass tmp(other); swap(tmp); return *this; }
복사 및 교환 관용구는 여러 가지 기능을 제공합니다. 장점:
스왑 기능 고려 사항
복사 생성자나 복사 할당 연산자에 의존하지 않고 내부를 직접 교환하는 "진정한" 스왑 기능을 사용하는 것이 중요합니다. 구성원별 스왑이나 기본 유형 및 포인터와 함께 std::swap을 사용하는 것이 일반적으로 적합합니다.
위 내용은 공통 함수가 복사 생성자와 복사 할당 연산자를 모두 대체할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!