C에서 참조를 재할당할 수 있습니까?
C에서 참조는 한 번만 초기화해야 하는 불변 엔터티로 종종 선전됩니다. 그러나 최근의 코드 조각은 이 원칙에 대한 의문을 제기했습니다.
코드 조각:
int i = 5, j = 9; int &ri = i; cout << "ri is : " << ri << "\n"; i = 10; cout << "ri is : " << ri << "\n"; ri = j; cout << "ri is : " << ri << "\n";
관찰:
질문:
이렇게 합니까? 코드가 실제로 참조 ri를 다시 할당하거나 다른 것입니다. 무슨 일이 일어나고 있나요?
답변:
아니요, ri는 여전히 i를 지칭합니다. 명백한 재할당은 실제로 참조 ri를 통한 i 수정입니다.
설명:
참조가 선언되면(예: int &ri = i) 바인딩됩니다. 개체(이 경우)에 연결되어 프로그램 전체에 걸쳐 연결된 상태로 유지됩니다. 코드 ri = j는 ri를 재할당하지 않고 오히려 참조 ri를 통해 i의 값을 수정합니다.
이를 증명하기 위해 &ri와 &i를 사용하여 ri와 i의 주소를 인쇄할 수 있습니다. 그러면 이들이 그대로 남아 있음을 알 수 있습니다. 동일합니다. 또한 ri가 j에 재할당되면 ri를 통해 i를 수정하는 것이 더 이상 불가능합니다. 이는 주어진 코드의 경우와 다릅니다.
결론:
코드 조각에서는 참조를 재할당할 수 있는 것처럼 보이지만 그렇지 않습니다. 대신, 참조하는 개체를 간접적으로 수정합니다. Const 참조(예: const int &cri = i)는 그러한 수정을 방지하고 진정한 불변성을 강화합니다.
위 내용은 C 참조를 재할당할 수 있습니까, 아니면 다른 일이 발생합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!