복사 할당 연산자에 참조/상수 참조 반환이 필요한 이유는 무엇입니까?
C에서 복사 할당 연산자는 일반적으로 참조를 반환합니다. 또는 자신에 대한 const 참조입니다. 이 디자인 선택은 성능 고려 사항에서 비롯되었으며 불필요한 복사를 방지합니다.
다음 예를 고려하십시오.
A a1(param); A a2 = a1; A a3; a3 = a2;
복사 할당 연산자인 Operator=가 새 개체의 복사본을 반환했다고 가정합니다. 이 경우 각 할당 작업은 임시 복사본 생성과 할당 후 해당 복사본의 후속 삭제를 트리거합니다.
A a3 = a2; // Creates a temporary copy of a2
그러나 참조 또는 const 참조를 반환하면 할당 작업이 다음과 같이 됩니다. 훨씬 더 효율적입니다. 데이터는 임시 복사본을 만들고 삭제할 필요 없이 한 개체에서 다른 개체로 직접 복사됩니다.
A& operator=(const A& a) { /* ... */ } a3 = a2; // Copies data directly from a2 without creating a temporary copy
참조 또는 const 참조를 반환하면 연산자를 연결할 수도 있습니다. 위의 예에서 할당 연산자가 호출 객체에 대한 참조를 반환하기 때문에 문 a = b = c가 올바르게 작동합니다.
반대로, 연산자가 복사본을 반환하면 연결이 불가능합니다. a = b = c 문은 c를 a에 할당하려면 복사본이 필요하고 b를 a에 할당하면 이미 복사본이 생성되므로 컴파일 오류가 발생합니다.
따라서 참조 또는 const를 반환합니다. 여러 할당의 성능과 올바른 연결을 위해서는 복사 할당 연산자의 참조가 필수적입니다.
위 내용은 C 복사 할당 연산자가 참조(또는 Const 참조)를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!