> 백엔드 개발 > C++ > C 복사 할당 연산자가 참조(또는 Const 참조)를 반환하는 이유는 무엇입니까?

C 복사 할당 연산자가 참조(또는 Const 참조)를 반환하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-13 22:25:16
원래의
820명이 탐색했습니다.

Why Do C   Copy Assignment Operators Return a Reference (or Const Reference)?

복사 할당 연산자에 참조/상수 참조 반환이 필요한 이유는 무엇입니까?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿