>백엔드 개발 >C++ >C에서 인라인 Friend 함수에 어떻게 액세스할 수 있나요?

C에서 인라인 Friend 함수에 어떻게 액세스할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-01 07:55:16659검색

How Can Inline Friend Functions Be Accessed in C  ?

인라인 Friend 함수 액세스: 어휘 및 실제 범위

클래스 내에서 인라인 Friend 함수를 선언할 때 어휘뿐만 아니라 범위뿐만 아니라 실제 범위도 포함됩니다. 어휘적으로 이러한 함수는 정의된 클래스 내에 있습니다. 그러나 실제 접근성은 상황에 따라 제한될 수 있습니다.

C 표준(ISO/IEC 14882:2011)에 따라 친구가 함수가 클래스 내에서 정규화되지 않은 식별자로 선언된 경우 가장 가까운 둘러싸는 네임스페이스 범위 내의 함수를 참조합니다. 그러나 이 친구 선언은 해당 범위에서 일반 조회를 위해 해당 함수를 표시하지 않습니다. 대신 ADL(인수 종속 조회)을 통해서만 액세스할 수 있습니다.

이 동작은 표준 7.3.1.2/3에서 강조됩니다.

"Non에서 친구 선언이 있는 경우 -local 클래스가 먼저 클래스나 함수를 선언하는 경우, 친구 클래스나 함수는 가장 안쪽에 있는 네임스페이스의 멤버입니다. 정규화되지 않은 조회나 정규화를 통해 친구의 이름을 찾을 수 없습니다. 해당 네임스페이스 범위에 일치하는 선언이 제공될 때까지 조회합니다."

본질적으로 인라인 friend 함수는 ADL을 통해서만 호출할 수 있으며 인수가 제공되지 않으면 호출할 수 없습니다. 따라서 클래스의 바깥쪽 범위나 멤버 함수를 통해 이러한 함수를 직접 호출하려고 하면 제공된 코드 예제에 설명된 것처럼 컴파일 오류가 발생합니다.

위 내용은 C에서 인라인 Friend 함수에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.