"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Const 참조가 C++에서 임시 수명을 연장하는 이유는 무엇입니까?

Const 참조가 C++에서 임시 수명을 연장하는 이유는 무엇입니까?

2024-11-07에 게시됨
검색:453

Why Do Const References Extend the Lifetime of Temporaries in C  ?

Const 참조에 의한 Rvalue 수명 연장

C에서 const 참조는 불변 별칭 역할을 할 뿐만 아니라 임시 수명도 연장합니다. C 위원회가 이 동작을 구현하기로 결정한 이유는 무엇입니까?

이 기능에 대한 한 가지 근거는 클래스와 함수에서 구현 세부 정보를 숨기는 것입니다. 행 벡터나 열 벡터를 반환할 수 있는 행렬 클래스를 생각해 보세요. 성능을 최적화하기 위해 클래스는 행 주요 또는 열 주요 구성을 기반으로 내부 값에 대한 참조를 반환하도록 선택할 수 있습니다. 클라이언트가 반환 값을 const 참조로 수락하도록 요구함으로써 클래스는 참조와 값 사이를 원활하게 전환하여 구현 세부 사항으로부터 클라이언트를 보호할 수 있습니다.

역사적으로 rvalue 수명을 연장하려는 결정은 방법의 불일치를 해결하려는 욕구에서 비롯되었습니다. 참조는 1993년에 임시로 처리되었습니다. 당시에는 RVO(반환 값 최적화)가 존재하지 않았습니다. 참조에 대한 임시 바인딩을 금지하면 성능이 크게 저하될 수 있습니다. 따라서 위원회는 참조 사용 중 가용성을 보장하기 위해 임시 항목의 수명을 연장하면서 바인딩을 허용하는 솔루션을 선택했습니다.

이 근거는 1993년 C 표준 위원회에 제출된 제안 N0345.pdf에 문서화되어 있습니다. . rvalue의 수명을 연장함으로써 const 참조는 더 나은 추상화를 촉진하고, 코드 유연성을 유지하며, 함수에서 객체를 반환할 때 성능을 최적화합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3