> 백엔드 개발 > C++ > C에서 비 Const 참조에 임시 개체를 전달할 수 없는 이유는 무엇입니까?

C에서 비 Const 참조에 임시 개체를 전달할 수 없는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-11 15:02:11
원래의
776명이 탐색했습니다.

Why Can't I Pass Temporary Objects to Non-Const References in C  ?

C에서 임시 개체에 대해 const 참조만 허용되는 이유는 무엇입니까?

C에서 임시 개체 할당은 const 참조에만 허용됩니다. , const가 아닌 참조는 금지됩니다. 이러한 제약으로 인해 특히 임시 개체 수정 가능성과 관련하여 수많은 질문이 제기되었습니다.

널리 알려져 있듯이 임시 개체는 일시적이며 해당 생성을 포함하는 문이 끝나자마자 사라집니다. 이는 유효한 우려를 제기합니다. 읽기가 허용되는 동안 수정이 제한되는 이유는 무엇입니까?

이 불일치를 이해하려면 함수 매개변수와 관련된 가상 상황을 고려하십시오.

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);
로그인 후 복사

비상수 참조가 임시 매개변수가 허용된다면 이 코드의 동작은 특이할 것입니다. int 인수를 참조로 전달하더라도 i 값은 inc를 호출한 후에도 변경되지 않습니다. 이는 예상치 못한 비논리적인 결과를 초래할 수 있습니다.

그러나 const 참조를 허용하면 함수 매개변수에 전달된 임시 개체가 실수로 수정되지 않도록 보장됩니다. 이렇게 하면 예상치 못한 동작이 발생할 가능성이 방지되고 const 참조 사용 의도가 유지됩니다.

위 내용은 C에서 비 Const 참조에 임시 개체를 전달할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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