>백엔드 개발 >C++ >C에서 인라인 Friend 함수의 범위는 실제로 어떻게 작동합니까?

C에서 인라인 Friend 함수의 범위는 실제로 어떻게 작동합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-25 02:13:21585검색

How Does the Scope of an Inline Friend Function in C   Actually Work?

인라인 Friend 함수의 범위

C의 맥락에서 인라인 Friend 함수의 어휘 범위는 해당 함수가 정의된 클래스까지 확장됩니다. 그러나 실제 범위를 결정하려면 추가 조사가 필요합니다.

ISO C 표준은 인라인 프렌드 함수가 네임스페이스 범위 클래스 내에서 선언될 때 가장 가까운 둘러싸는 네임스페이스 범위에서 함수의 이름을 지정하도록 지정합니다. 함수가 아직 선언되지 않은 경우, friend 선언만으로는 정규화되지 않은 조회를 위해 해당 범위에 함수가 표시되지 않습니다.

대신, friend 선언을 사용하면 인수 종속 조회(ADL)를 통해 함수에 액세스할 수 있습니다. ). 즉, 함수 인수의 유형이 함수 선언이 포함된 네임스페이스 범위와 일치하는 한, 정규화되지 않은 이름을 사용하여 친구 함수를 호출할 수 있습니다.

따라서 클래스 내에 선언된 인라인 친구 함수는 다음을 통해서만 호출할 수 있습니다. ADL(인클로징 네임스페이스 범위에서 이후에 선언되거나 정의되지 않는 한) 이렇게 하면 인수가 명확한 이름 확인을 허용하는 경우에만 함수에 액세스할 수 있습니다.

다음 코드 조각은 이 동작을 보여줍니다.

namespace foo {
  struct bar {
    friend void baz();
  };
}

// Compilation error in main: 'baz' is not accessible through unqualified lookup
int main() {
  foo::baz();
}

위 내용은 C에서 인라인 Friend 함수의 범위는 실제로 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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